EpochtalkServer.Models.Role (epochtalk_server v0.1.0)
Role model, for performing actions relating to user roles
Link to this section Summary
Functions
Returns every Role record in the database
Returns a Role or list of roles, for specified lookup(s)
Returns a list containing a user's roles
Create generic changeset for the Role model
Returns id for the banned Role
Returns default Role, for base installation this is the user role, if :epochtalk_server[:frontend_config]["newbie_enabled"]
configuration is set to true, then newbie is the default role.
Takes in list of user's roles, and returns an xored map of all Role permissions
Returns id for the newbie Role
The banned Role takes priority over all other roles
If a User is banned, only return the banned Role
Default role is not stored in the database, in order to save space checks the role array on the user model if roles array is empty, sets the default role by appending it
Inserts a new Role into the database
Updates the permissions of an existing Role in the database
Link to this section Types
@type t() :: %EpochtalkServer.Models.Role{ __meta__: term(), created_at: NaiveDateTime.t() | nil, description: String.t() | nil, highlight_color: String.t() | nil, id: non_neg_integer() | nil, lookup: String.t() | nil, name: String.t() | nil, permissions: map() | nil, priority: non_neg_integer() | nil, priority_restrictions: [non_neg_integer()] | nil, updated_at: NaiveDateTime.t() | nil }
Link to this section Functions
all()
@spec all() :: [t()] | []
Returns every Role record in the database
by_lookup(lookups)
Returns a Role or list of roles, for specified lookup(s)
by_user_id(user_id)
Returns a list containing a user's roles
changeset(role, attrs \\ %{})
@spec changeset(role :: t(), attrs :: map() | nil) :: Ecto.Changeset.t()
Create generic changeset for the Role model
get_banned_role_id()
@spec get_banned_role_id() :: integer() | nil
Returns id for the banned Role
get_default()
@spec get_default() :: t() | nil
Returns default Role, for base installation this is the user role, if :epochtalk_server[:frontend_config]["newbie_enabled"]
configuration is set to true, then newbie is the default role.
get_masked_permissions(roles)
Takes in list of user's roles, and returns an xored map of all Role permissions
get_newbie_role_id()
@spec get_newbie_role_id() :: integer() | nil
Returns id for the newbie Role
handle_banned_user_role(user)
@spec handle_banned_user_role( user_or_roles :: EpochtalkServer.Models.User.t() | [t()] ) :: EpochtalkServer.Models.User.t() | [t()]
The banned Role takes priority over all other roles
If a User is banned, only return the banned Role
This helper needs to be called anywhere that modifies a user's ban and is expected to return the updated user's roles.
handle_empty_user_roles(user)
@spec handle_empty_user_roles(user :: EpochtalkServer.Models.User.t()) :: EpochtalkServer.Models.User.t()
Default role is not stored in the database, in order to save space checks the role array on the user model if roles array is empty, sets the default role by appending it
This helper needs to be called anywhere that modifies a user's roles and is expected to return the updated user's roles.
insert(role)
@spec insert(role_or_roles :: t() | [%{}]) :: {:ok, role :: t()} | {non_neg_integer(), nil | [term()]} | {:error, Ecto.Changeset.t()}
Inserts a new Role into the database
set_permissions(id, permissions)
@spec set_permissions(id :: integer(), permissions_attrs :: map()) :: {:ok, role :: t()} | {:error, Ecto.Changeset.t()}
Updates the permissions of an existing Role in the database