fluminus v0.1.2 Fluminus.Authorization View Source

Provides an abstraction over the OpenID Connect flow authorization process as used by LumiNUS

Struct fields:

  • :cookies - cookies that needs to be sent to the server
  • :jwt - contains the JWT to be used for authorization to the server

Link to this section Summary

Functions

Obtains a Elixir.Fluminus.Authorization struct containing JWT required for authorization and cookies to refresh JWT. Please note that the JWT is usually only valid for 1 hour, and the cookies for 24 hours

Renews the JWT of a Elixir.Fluminus.Authorization struct containing expired token using the cookies inside the struct. Please note that the cookie is only valid for 24 hours

Link to this section Types

Link to this type

t() View Source
t() :: %Fluminus.Authorization{
  cookies: %{required(String.t()) => String.t()},
  jwt: String.t() | nil
}

Link to this section Functions

Link to this function

jwt(username, password) View Source
jwt(String.t(), String.t()) ::
  {:ok, Fluminus.Authorization.t()}
  | {:error, :invalid_credentials}
  | {:error, any()}

Obtains a Elixir.Fluminus.Authorization struct containing JWT required for authorization and cookies to refresh JWT. Please note that the JWT is usually only valid for 1 hour, and the cookies for 24 hours.

username is the username of your NUSNET account (in the format of e0123456). password is the password of your NUSNET account.

Examples

iex> Fluminus.Authorization.jwt("e0123456", "hunter2")
{:ok,
 %Fluminus.Authorization{
   cookies: %{
     "idsrv" => "Fnl_dY2mhtVU9nyZLb93vpU9I4eZVcWyhrnwBwCkkbrtjBsUFTGVr6JQk_x1DbdsieBzzoxqzVnrQ-dUCwqRD-dKkA1ixFnCggcX_PMcrIzr4PiZj35Z2LpVkMuWSju2BrLOJgpqCO0FFFv3uSX4Ll_jnEgPrptkHPnm6yxHls_oobhn_29Itf--NGWmWdzytx7hOktHBkeBRYhljrUHxqkGtYD2lRngMYBLBLHnTwYnu8ALRVu1oqyeEmEjQbh0pUdDCaLsnIvrFKKVQuB0Fh1z3awLUWJ8awomebTmgE5VeA68RLxy1y3J7rAJCW2IQz4WTpF1lowUry_W3UfIqUbYGcPqcdITcO2FrF6iXmxCaRWsuh07b41dQLYS04o9PRI_Q_gZYRdXroCrd_VPHdLzWi9eOnZ9fHCiG5fj1Do"
   },
   jwt: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSIsImtpZCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSJ9.eyJpc3MiOiJodHRwczovL2x1bWludXMubnVzLmVkdS5zZy92Mi9hdXRoIiwiYXVkIjoidmVyc28iLCJleHAiOjE1NDkxMDkzNjQsIm5iZiI6MTu0OTEwOTA2NCwibm9uY2UiOiI1NjlaY2VlMDM1MzdjNjQ2ZmU2MmE1MjIzOGFlN2E3ZiIsImlhdCI6MTU0OTEwOTA2NCwiYXRfaGFzaCI6ImZxWWFlLWRNaWRJNGIxZTJSMUVUUkEiLCJjX2hhc2giOiIxSkI3M1BheFVmTUROZVoybmZFcGd3Iiwic3ViIjoiMDMwODkyNTItMGM5Ni00ZmFiLWIwODAaZjJhZWIwN2VlYjBmIiwiYXV0aF90aW1lIjoxNTQ5MTA5MDY0LCJpZHAiOiJpZHNydiIsImFkZHJlc3MiOiJSZXF1ZXN0IGFsbCBjbGFpbXMiLCJhbXIiOlsicGFzc3dvcmQiXX0.NKmxw6ipXr6H2aD2cdoBiMvch9FCmeYAdtsHjYoGerhiaBdoxJ-um8P-0ThEouF4P6YYmltMSsNo9tWFNWOIhY9anU1TgTdYaYCqx5w8N9aAemRF9-PjTZMPCRCnk1xVyI3q06C_uinNJQ00So1lcA9rneWBJJecZwgwKht7EvsUiEUjXso1LgiBxO9LPOcrA47PaMti-228nN6EsxEx7Zpl8bLpQLDWX8XN8N2IKYoyo8nlQKThgziotgKXYJO22Z2DYImGTB46X2u2MfscSAedjzEhssJwVre5w2zztAAgU7E2mSif6V7jC42W7OmKQmi79_N10OAxxMUqUc7c0Q"
 }}
Link to this function

renew_jwt(auth) View Source
renew_jwt(Fluminus.Authorization.t()) ::
  {:ok, Fluminus.Authorization.t()}
  | {:error, :invalid_authorization}
  | {:error, any()}

Renews the JWT of a Elixir.Fluminus.Authorization struct containing expired token using the cookies inside the struct. Please note that the cookie is only valid for 24 hours.

Examples

iex> Fluminus.Authorization.renew_jwt(auth)
{:ok,
 %Fluminus.Authorization{
   cookies: %{
     "idsrv" => "Fnl_dY2mhtVU9nyZLb93vpU9I4eZVcWyhrnwBwCkkbrtjBsUFTGVr6JQk_x1DbdsieBzzoxqzVnrQ-dUCwqRD-dKkA1ixFnCggcX_PMcrIzr4PiZj35Z2LpVkMuWSju2BrLOJgpqCO0FFFv3uSX4Ll_jnEgPrptkHPnm6yxHls_oobhn_29Itf--NGWmWdzytx7hOktHBkeBRYhljrUHxqkGtYD2lRngMYBLBLHnTwYnu8ALRVu1oqyeEmEjQbh0pUdDCaLsnIvrFKKVQuB0Fh1z3awLUWJ8awomebTmgE5VeA68RLxy1y3J7rAJCW2IQz4WTpF1lowUry_W3UfIqUbYGcPqcdITcO2FrF6iXmxCaRWsuh07b41dQLYS04o9PRI_Q_gZYRdXroCrd_VPHdLzWi9eOnZ9fHCiG5fj1Do"
   },
   jwt: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSIsImtpZCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSJ9.eyJpc3MiOiJodHRwczovL2x1bWludXMubnVzLmVkdS5zZy92Mi9hdXRoIiwiYXVkIjoidmVyc28iLCJleHAiOjE1NDkxMDkzNjQsIm5iZiI6MTu0OTEwOTA2NCwibm9uY2UiOiI1NjlaY2VlMDM1MzdjNjQ2ZmU2MmE1MjIzOGFlN2E3ZiIsImlhdCI6MTU0OTEwOTA2NCwiYXRfaGFzaCI6ImZxWWFlLWRNaWRJNGIxZTJSMUVUUkEiLCJjX2hhc2giOiIxSkI3M1BheFVmTUROZVoybmZFcGd3Iiwic3ViIjoiMDMwODkyNTItMGM5Ni00ZmFiLWIwODAaZjJhZWIwN2VlYjBmIiwiYXV0aF90aW1lIjoxNTQ5MTA5MDY0LCJpZHAiOiJpZHNydiIsImFkZHJlc3MiOiJSZXF1ZXN0IGFsbCBjbGFpbXMiLCJhbXIiOlsicGFzc3dvcmQiXX0.NKmxw6ipXr6H2aD2cdoBiMvch9FCmeYAdtsHjYoGerhiaBdoxJ-um8P-0ThEouF4P6YYmltMSsNo9tWFNWOIhY9anU1TgTdYaYCqx5w8N9aAemRF9-PjTZMPCRCnk1xVyI3q06C_uinNJQ00So1lcA9rneWBJJecZwgwKht7EvsUiEUjXso1LgiBxO9LPOcrA47PaMti-228nN6EsxEx7Zpl8bLpQLDWX8XN8N2IKYoyo8nlQKThgziotgKXYJO22Z2DYImGTB46X2u2MfscSAedjzEhssJwVre5w2zztAAgU7E2mSif6V7jC42W7OmKQmi79_N10OAxxMUqUc7c0Q"
 }}