| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-15 19:22:30 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-15 19:22:30 +0100 | 
| commit | d50ae4d7700c4cb083e907b3d3e4ee67b92a6459 (patch) | |
| tree | 1a19779b083002f6e9a29f33b8f7ffdb06fa855e /src/shared | |
| parent | 2c3aa52b642858b85ba756df927ff5730f5ee73d (diff) | |
Get debug to okay the src files.
Diffstat (limited to 'src/shared')
| -rw-r--r-- | src/shared/io/shr_database.erl | 158 | ||||
| -rw-r--r-- | src/shared/io/shr_timed_cache.erl | 2 | ||||
| -rw-r--r-- | src/shared/shr_janitor.erl | 2 | ||||
| -rw-r--r-- | src/shared/struct/shr_db_item.erl | 96 | ||||
| -rw-r--r-- | src/shared/struct/shr_db_query.erl | 241 | ||||
| -rw-r--r-- | src/shared/struct/shr_db_user.erl | 39 | 
6 files changed, 2 insertions, 536 deletions
| diff --git a/src/shared/io/shr_database.erl b/src/shared/io/shr_database.erl deleted file mode 100644 index c1792dc..0000000 --- a/src/shared/io/shr_database.erl +++ /dev/null @@ -1,158 +0,0 @@ --module(shr_database). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( -   [ -      insert_at/5, -      insert/4, -      remove/3, -      fetch/3, -      reserve/3, -      commit/1 -   ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_debug_db_node () -> node(). -get_debug_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()). - --spec get_random_db_node () -> node(). -get_random_db_node () -> -   get_debug_db_node(). - --spec get_db_node_for (binary()) -> node(). -get_db_node_for (_ObjectID) -> -   get_debug_db_node(). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec insert_at -   ( -      atom(), -      binary(), -      shr_db_user:permission(), -      shr_db_user:permission(), -      any() -   ) -   -> 'ok'. -insert_at (DB, ObjectID, ReadPerm, WritePerm, Value) -> -   DBNode = get_db_node_for(ObjectID), - -   {atomic, _} = -      rpc:call -      ( -         DBNode, -         db_access, -         insert_at, -         [DB, ObjectID, ReadPerm, WritePerm, Value] -      ), - -   io:format -   ( -      "~nshr_database:insert_at(~p) ! ~p -> ok.~n", -      [{DB, ObjectID, ReadPerm, WritePerm, Value}, DBNode] -   ), - -   ok. - --spec insert -   ( -      atom(), -      shr_db_user:permission(), -      shr_db_user:permission(), -      any() -   ) -   -> {'ok', binary()}. -insert (DB, ReadPerm, WritePerm, Value) -> -   DBNode = get_random_db_node(), - -   {atomic, {ok, ID}} = -      rpc:call(DBNode, db_access, insert, [DB, ReadPerm, WritePerm, Value]), - -   io:format -   ( -      "~nshr_database:insert(~p) ! ~p -> ok.~n", -      [{DB, ReadPerm, WritePerm, Value}, DBNode] -   ), - -   {ok, ID}. - --spec fetch -   ( -      atom(), -      binary(), -      shr_db_user:user() -   ) -   -> ({'ok', any()} | 'not_found'). -fetch (DB, ObjectID, Cred) -> -   DBNode = get_db_node_for(ObjectID), - -   {atomic, Reply} = rpc:call(DBNode, db_access, read, [DB, ObjectID, Cred]), - -   io:format -   ( -      "~nshr_database:fetch(~p) ! ~p -> ~p.~n", -      [{DB, ObjectID, Cred}, DBNode, Reply] -   ), - -   Reply. - --spec commit (shr_db_query:type()) -> 'ok'. -commit (Query) -> -   DBNode = get_db_node_for(shr_db_query:get_entry_id(Query)), - -   {atomic, ok} = rpc:call(DBNode, db_access, query, [Query]), - -   io:format("~nshr_database:commit(~p) ! ~p -> ok.~n", [Query, DBNode]), - -   ok. - --spec remove -   ( -      atom(), -      binary(), -      shr_db_user:user() -   ) -   -> ('ok' | 'not_found'). -remove (DB, ObjectID, Cred) -> -   DBNode = get_db_node_for(ObjectID), - -   {atomic, _} = rpc:call(DBNode, db_access, remove, [DB, ObjectID, Cred]), - -   io:format -   ( -      "~nshr_database:remove(~p) ! ~p -> ok.~n", -      [{DB, ObjectID, Cred}, DBNode] -   ), - -   ok. - --spec reserve -   ( -      atom(), -      binary(), -      shr_db_user:user() -   ) -   -> ('ok' | 'not_found'). -reserve (DB, ObjectID, Cred) -> -   DBNode = get_db_node_for(ObjectID), - -   {atomic, _} = rpc:call(DBNode, db_access, reserve, [DB, ObjectID, Cred]), - -   io:format -   ( -      "~nshr_database:reserve(~p) ! ~p -> ok.~n", -      [{DB, ObjectID, Cred}, DBNode] -   ), - -   ok. diff --git a/src/shared/io/shr_timed_cache.erl b/src/shared/io/shr_timed_cache.erl index de3d094..ff6e13d 100644 --- a/src/shared/io/shr_timed_cache.erl +++ b/src/shared/io/shr_timed_cache.erl @@ -38,7 +38,7 @@  -spec add_to_cache (atom(), any(), any()) -> any().  add_to_cache (DB, Owner, ObjectID) ->     {ok, TimerPID} = gen_server:start(?MODULE, {DB, {Owner, ObjectID}}, []), -   {ok, Data} = shr_database:fetch(DB, ObjectID, Owner), +   {ok, Data} = ataxia_client:fetch(DB, Owner, ObjectID),     ets:insert(DB, {{Owner, ObjectID}, TimerPID, Data}),     Data. diff --git a/src/shared/shr_janitor.erl b/src/shared/shr_janitor.erl index 097a729..05df18a 100644 --- a/src/shared/shr_janitor.erl +++ b/src/shared/shr_janitor.erl @@ -22,7 +22,7 @@ core (DB, ItemID) ->     receive     after        60000 -> -         shr_database:remove(DB, ItemID, janitor) +         ataxia_client:remove(DB, ataxia_security:janitor(), ItemID)     end.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/shared/struct/shr_db_item.erl b/src/shared/struct/shr_db_item.erl deleted file mode 100644 index 417e772..0000000 --- a/src/shared/struct/shr_db_item.erl +++ /dev/null @@ -1,96 +0,0 @@ --module(shr_db_item). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --record -( -   db_item, -   { -      id :: any(), -      read_perm :: shr_db_user:permission(), -      write_perm :: shr_db_user:permission(), -      val :: any() -   } -). - --type db_item() :: #db_item{}. - --type type() :: db_item(). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([type/0]). - --export -( -   [ -      new/4, - -      get_id/1, -      get_read_permission/1, -      get_write_permission/1, -      get_value/1, - -      set_read_permission/2, -      set_write_permission/2, -      set_value/2, - -      get_id_field/0, -      get_record_info/0, -      get_record_name/0 -   ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new -   ( -      any(), -      shr_db_user:permission(), -      shr_db_user:permission(), -      any() -   ) -> type(). -new (ID, ReadPermission, WritePermission, Value) -> -   #db_item -   { -      id = ID, -      read_perm = ReadPermission, -      write_perm = WritePermission, -      val = Value -   }. - --spec get_id (type()) -> any(). -get_id (#db_item { id = Result }) -> Result. - --spec get_read_permission (type()) -> shr_db_user:permission(). -get_read_permission (#db_item { read_perm = Result }) -> Result. - --spec get_write_permission (type()) -> shr_db_user:permission(). -get_write_permission (#db_item { write_perm = Result }) -> Result. - --spec get_value (type()) -> any(). -get_value (#db_item { val = Result }) -> Result. - --spec set_read_permission (shr_db_user:permission(), type()) -> type(). -set_read_permission (Perm, Item) -> Item#db_item{ read_perm = Perm }. - --spec set_write_permission (shr_db_user:permission(), type()) -> type(). -set_write_permission (Perm, Item) -> Item#db_item{ write_perm = Perm }. - --spec set_value (any(), type()) -> type(). -set_value (Value, Item) -> Item#db_item{ val = Value }. - --spec get_id_field () -> non_neg_integer(). -get_id_field () -> #db_item.id. - -get_record_info () -> record_info(fields, db_item). - -get_record_name () -> db_item. - diff --git a/src/shared/struct/shr_db_query.erl b/src/shared/struct/shr_db_query.erl deleted file mode 100644 index af8b080..0000000 --- a/src/shared/struct/shr_db_query.erl +++ /dev/null @@ -1,241 +0,0 @@ --module(shr_db_query). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --record -( -   set_field, -   { -      field :: non_neg_integer(), -      value :: any() -   } -). - --record -( -   add_to_field, -   { -      field :: non_neg_integer(), -      values :: list(any()), -      head :: boolean() -   } -). - --record -( -   update_indexed, -   { -      field :: non_neg_integer(), -      ix :: non_neg_integer(), -      ops :: list(db_query_op()) -   } -). - --record -( -   set_read_perm, -   { -      perm :: shr_db_user:permission() -   } -). - --record -( -   set_write_perm, -   { -      perm :: shr_db_user:permission() -   } -). - --record -( -   set_val, -   { -      val :: any() -   } -). - --record -( -   db_query, -   { -      db :: atom(), -      id :: any(), -      user :: shr_db_user:user(), -      ops :: list(db_query_master_op()) -   } -). - --type db_query_op() :: -   (#set_field{} | #add_to_field{} | #update_indexed{} | #set_val{}). --type db_query_master_op() :: -   (db_query_op() | #set_read_perm{} | #set_write_perm{}). - --type db_query() :: #db_query{}. - --type op() :: db_query_master_op(). --type type() :: db_query(). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([type/0, op/0]). - --export -( -   [ -      new/4, -      set_field/2, -      add_to_field/3, -      update_indexed/3, -      set_value/1, -      set_read_permission/1, -      set_write_permission/1 -   ] -). --export -( -   [ -      get_database/1, -      get_entry_id/1 -   ] -). --export([apply_to/2]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_user (db_query()) -> shr_db_user:user(). -get_user (#db_query{ user = Result }) -> Result. - --spec apply_update_indexed (#update_indexed{}, any()) -> any(). -apply_update_indexed (Op, Elem) -> -   FieldNumber = Op#update_indexed.field, -   IX = Op#update_indexed.ix, -   Ops = Op#update_indexed.ops, - -   IndexedFieldValue = element(FieldNumber, Elem), -   ArrayValue = array:get(IX, IndexedFieldValue), -   UpdatedArrayValue = lists:foldl(fun apply_op_to/2, ArrayValue, Ops), -   UpdatedIndexedFieldValue = -      array:set(IX, UpdatedArrayValue, IndexedFieldValue), - -   setelement(FieldNumber, Elem, UpdatedIndexedFieldValue). - --spec apply_add_to_field (#add_to_field{}, any()) -> any(). -apply_add_to_field (Op, Elem) -> -   FieldNumber = Op#add_to_field.field, -   NewValues = Op#add_to_field.values, -   AddToHead = Op#add_to_field.head, - -   CurrentValues = element(FieldNumber, Elem), -   UpdatedValues = -      case AddToHead of -         true -> (NewValues ++ CurrentValues); -         _ -> (CurrentValues ++ NewValues) -      end, - -   setelement(FieldNumber, Elem, UpdatedValues). - --spec apply_set_field (#set_field{}, any()) -> any(). -apply_set_field (Op, Elem) -> -   FieldNumber = Op#set_field.field, -   NewValue = Op#set_field.value, - -   setelement(FieldNumber, Elem, NewValue). - --spec apply_op_to (db_query_op(), any()) -> any(). -apply_op_to (Op, Elem) when is_record(Op, set_field) -> -   apply_set_field(Op, Elem); -apply_op_to (MOp, _Elem) when is_record(MOp, set_val) -> -   NewVal = MOp#set_val.val, -   NewVal; -apply_op_to (Op, Elem) when is_record(Op, add_to_field) -> -   apply_add_to_field(Op, Elem); -apply_op_to (Op, Elem) when is_record(Op, update_indexed) -> -   apply_update_indexed(Op, Elem). - --spec apply_master_op_to -   ( -      db_query_master_op(), -      shr_db_item:type() -   ) -   -> shr_db_item:type(). -apply_master_op_to (MOp, Elem) when is_record(MOp, set_read_perm) -> -   NewPerm = MOp#set_read_perm.perm, - -   shr_db_item:set_read_permission(NewPerm, Elem); -apply_master_op_to (MOp, Elem) when is_record(MOp, set_write_perm) -> -   NewPerm = MOp#set_write_perm.perm, - -   shr_db_item:set_write_permission(NewPerm, Elem); -apply_master_op_to (MOp, Elem) -> -   OldValue = shr_db_item:get_value(Elem), -   NewValue = apply_op_to(MOp, OldValue), - -   shr_db_item:set_value(NewValue, Elem). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new (atom(), any(), shr_db_user:user(), list(op())) -> type(). -new (DBName, ObjectID, User, Ops) -> -   #db_query -   { -      db = DBName, -      id = ObjectID, -      user = User, -      ops = Ops -   }. - --spec set_field (non_neg_integer(), any()) -> op(). -set_field (Field, Value) -> -   #set_field { field = Field, value = Value }. - --spec set_value (any()) -> op(). -set_value (Value) -> #set_val { val= Value }. - --spec set_read_permission (shr_db_user:permission()) -> op(). -set_read_permission (Perm) -> #set_read_perm { perm = Perm }. - --spec set_write_permission (shr_db_user:permission()) -> op(). -set_write_permission (Perm) -> #set_write_perm { perm = Perm }. - --spec add_to_field (non_neg_integer(), list(any()), boolean()) -> op(). -add_to_field (Field, Values, IsPrefix) -> -   #add_to_field { field = Field, values = Values, head = IsPrefix}. - --spec update_indexed -   ( -      non_neg_integer(), -      non_neg_integer(), -      list(op()) -   ) -   -> op(). -update_indexed (Field, IX, Updates) -> -   #update_indexed { field = Field, ix = IX, ops = Updates}. - --spec get_database (db_query()) -> atom(). -get_database (#db_query{ db = Result }) -> Result. - --spec get_entry_id (db_query()) -> any(). -get_entry_id (#db_query{ id = Result }) -> Result. - --spec apply_to -   ( -      db_query(), -      shr_db_item:type() -   ) -   -> ({'ok', shr_db_item:type()} | 'error'). -apply_to (DBQuery, DBItem) -> -   ObjectWPerm = shr_db_item:get_write_permission(DBItem), -   User = get_user(DBQuery), - -   io:format("~p accessing obj with ~p perm.~n", [User, ObjectWPerm]), - -   true = shr_db_user:can_access (ObjectWPerm, User), - -   MOps = DBQuery#db_query.ops, -   {ok, lists:foldl(fun apply_master_op_to/2, DBItem, MOps)}. - diff --git a/src/shared/struct/shr_db_user.erl b/src/shared/struct/shr_db_user.erl deleted file mode 100644 index dcd8685..0000000 --- a/src/shared/struct/shr_db_user.erl +++ /dev/null @@ -1,39 +0,0 @@ --module(shr_db_user). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --type db_named_user() :: {'user', any()}. --type db_user() :: (db_named_user() | 'admin' | 'any' | 'janitor'). --type db_permission() :: (list(db_named_user()) | 'any' | 'janitor'). - - --type user() :: db_user(). --type permission() :: db_permission(). -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([user/0, permission/0]). - --export([can_access/2, player/1]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec player (shr_player:id()) -> db_user(). -player (ID) -> {user, ID}. - --spec can_access (permission(), user()) -> boolean(). -can_access (_, admin) -> true; -can_access (any, _) -> true; -can_access (janitor, janitor) -> true; -can_access (List, {user, User}) -> -   lists:member({user, User}, List); -can_access (List, janitor) -> -   lists:member(janitor, List); -can_access (List, User) -> -   can_access(List, {user, User}). | 


