RBAC (rbac v0.7.1)
Documentation for Rbac
.
Link to this section Summary
Functions
get_approles/2
fetches the roles for the app from auth server.
get_personroles
fetches a list of roles assigned to a person from the
specified auth_url
, based off the person_id
get_role_from_cache/1
retrieves a role from ets cache
has_role?/2
confirms if the person has the given role.
Accepts list of role ids or %Plug.Conn{}
as first argument.
has_role_any/2
checks if the person has any one (or more)
of the roles listed. Allows multiple roles to access content.
e.g:
has_role_any?(conn, ["home_admin", "building_owner")
true
init_roles/2
fetches the list of roles for an app
from the auth app (auth_url) based on the client_id
and caches the list in-memory (ETS) for fast access.
insert_roles_into_ets_cache/1
inserts the list of roles into
an ETS in-memroy cache for fast access at run-time.
ETS is a high performance cache included Free in Elixir/Erlang.
See: https://elixir-lang.org/getting-started/mix-otp/ets.html
and: https://elixirschool.com/en/lessons/specifics/ets
list_approles
lists all the roles in the current role cache.
parse_role_string/1
extracts the roles from String and makes a
List of integers.
transform_role_list_to_string/1
transforms a list of maps (roles)
to comma-separated string of ids (minimal data use)
which is JSON-compatible and can thus be used in the JWT in auth.
Link to this section Functions
get_approles(auth_url, client_id)
get_approles/2
fetches the roles for the app from auth server.
get_personroles(auth_url, person_id)
get_personroles
fetches a list of roles assigned to a person from the
specified auth_url
, based off the person_id
get_personroles(auth_url, person_id, client_id)
get_role_from_cache(term)
get_role_from_cache/1
retrieves a role from ets cache
has_role?(conn, role_name)
has_role?/2
confirms if the person has the given role.
Accepts list of role ids or %Plug.Conn{}
as first argument.
e.g: has_role?([1,2,42], :home_admin) true
has_role?([1,2,42], "home_admin") true
has_role?([1,2,14], "potus") false
has_role?(%Plug.Conn{}, "home_admin") false
has_role_any?(roles, roles_list)
has_role_any/2
checks if the person has any one (or more)
of the roles listed. Allows multiple roles to access content.
e.g:
has_role_any?(conn, ["home_admin", "building_owner")
true
has_role_any?(conn, ["potus", "el_presidente") false
init_roles_cache(auth_url, client_id)
init_roles/2
fetches the list of roles for an app
from the auth app (auth_url) based on the client_id
and caches the list in-memory (ETS) for fast access.
insert_roles_into_ets_cache(roles)
insert_roles_into_ets_cache/1
inserts the list of roles into
an ETS in-memroy cache for fast access at run-time.
ETS is a high performance cache included Free in Elixir/Erlang.
See: https://elixir-lang.org/getting-started/mix-otp/ets.html
and: https://elixirschool.com/en/lessons/specifics/ets
list_approles()
list_approles
lists all the roles in the current role cache.
parse_role_string(roles)
parse_role_string/1
extracts the roles from String and makes a
List of integers.
example
Example
iex> RBAC.parse_role_string("1,2,3")
[1,2,3]
transform_role_list_to_string(roles)
transform_role_list_to_string/1
transforms a list of maps (roles)
to comma-separated string of ids (minimal data use)
which is JSON-compatible and can thus be used in the JWT in auth.
examples
Examples
iex> RBAC.transform_role_list_to_string([%{id: 1}, %{id: 2}, %{id: 3}])
"1,2,3"
iex> RBAC.transform_role_list_to_string("1,2,3")
"1,2,3"
iex> RBAC.transform_role_list_to_string(%{name: "sub", id: 1, revoked: nil})
"1"
iex> RBAC.transform_role_list_to_string([%{id: 1, revoked: 1}, %{id: 3}])
"3"