gbr/msal

Gleam Microsoft Authentication Library

pub fn main() {
  let cfg =
    msal.cfg("client_id")
    |> msal.cfg_add_auth("authority", "https://login.microsoftonline/common")
    |> msal.cfg_add_cache("cacheLocation", "localStorage")

  use msal <- promise.try_await(msal.new(cfg))
  use response <- promise.map_try(msal.login(msal, msal.popup, None))
  msal.res_get(response, "idToken") |> echo
  msal.res_get(response, "accessToken") |> echo
  msal.res_parent_get(response, "account", "username") |> echo
}
pub fn main() {
  let msal =
    cfg("client_id")
    |> cfg_add_auth("authority", "https://login.microsoftonline/common")
    |> cfg_add_cache("cacheLocation", "localStorage")
    |> new()

  use msal <- promise.map_try(msal)
  use account_active <- result.try(account_active(msal))

  echo account_active
}

Types

pub type Msal =
  domain.Msal

Values

pub fn cfg(client_id: String) -> a
pub fn cfg_add_auth(
  in: domain.Configuration,
  key: String,
  value: a,
) -> domain.Configuration
pub fn cfg_add_cache(
  in: domain.Configuration,
  key: String,
  value: a,
) -> domain.Configuration
pub fn cfg_add_system(
  in: domain.Configuration,
  key: String,
  value: a,
) -> domain.Configuration
pub fn handle_redirect(
  in: domain.Msal,
) -> promise.Promise(Result(domain.Response, String))
pub fn login(
  in: domain.Msal,
  iteraction: domain.Iteraction,
  req: option.Option(domain.Request),
) -> promise.Promise(Result(domain.Response, String))
pub fn logout(
  in: domain.Msal,
  iteraction: domain.Iteraction,
  req: option.Option(domain.Request),
) -> promise.Promise(Result(Nil, String))
pub fn nested(
  cfg: domain.Configuration,
) -> promise.Promise(Result(domain.Msal, String))
pub fn new(
  cfg: domain.Configuration,
) -> promise.Promise(Result(domain.Msal, String))
pub fn req() -> domain.Request
pub fn req_add(
  in: domain.Request,
  key: String,
  value: a,
) -> domain.Request
pub fn req_parent_add(
  in: domain.Request,
  parent: String,
  key: String,
  value: a,
) -> domain.Request
pub fn res_get(
  in: domain.Response,
  key: String,
) -> option.Option(a)
pub fn res_parent_get(
  in: domain.Response,
  parent: String,
  key: String,
) -> option.Option(a)
pub fn token(
  in: domain.Msal,
  iteraction: domain.Iteraction,
  req: domain.Request,
) -> promise.Promise(Result(domain.Response, String))
Search Document