summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/struct')
-rw-r--r--src/shared/struct/shr_db_query.erl31
-rw-r--r--src/shared/struct/shr_db_user.erl12
-rw-r--r--src/shared/struct/shr_player.erl4
3 files changed, 34 insertions, 13 deletions
diff --git a/src/shared/struct/shr_db_query.erl b/src/shared/struct/shr_db_query.erl
index e1f6156..5310f00 100644
--- a/src/shared/struct/shr_db_query.erl
+++ b/src/shared/struct/shr_db_query.erl
@@ -73,8 +73,8 @@
-type db_query() :: #db_query{}.
--opaque op() :: db_query_op().
--opaque type() :: db_query().
+-type op() :: db_query_master_op().
+-type type() :: db_query().
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -87,7 +87,10 @@
new/4,
set_field/2,
add_to_field/3,
- update_indexed/3
+ update_indexed/3,
+ set_value/1,
+ set_read_permission/1,
+ set_write_permission/1
]
).
-export
@@ -190,6 +193,15 @@ new (DBName, ObjectID, User, Ops) ->
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}.
@@ -217,12 +229,13 @@ get_entry_id (#db_query{ id = Result }) -> Result.
)
-> ({'ok', shr_db_item:type()} | 'error').
apply_to (DBQuery, DBItem) ->
- true =
- shr_db_user:can_access
- (
- shr_db_item:get_write_permission(DBItem),
- get_user(DBQuery)
- ),
+ 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
index 01840e2..991fb64 100644
--- a/src/shared/struct/shr_db_user.erl
+++ b/src/shared/struct/shr_db_user.erl
@@ -4,8 +4,8 @@
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-type db_named_user() :: {'user', any()}.
--type db_user() :: (db_named_user() | 'admin' | 'any').
--type db_permission() :: (list(db_named_user()) | 'any').
+-type db_user() :: (db_named_user() | 'admin' | 'any' | 'janitor').
+-type db_permission() :: (list(db_named_user()) | 'any' | 'janitor').
-type user() :: db_user().
@@ -27,5 +27,9 @@
-spec can_access (permission(), user()) -> boolean().
can_access (_, admin) -> true;
can_access (any, _) -> true;
-can_access (List, {'user', User}) ->
- lists:member(User, List).
+can_access (janitor, janitor) -> true;
+can_access (List, {user, User}) ->
+ lists:member({user, User}, List);
+can_access (janitor, janitor) -> true;
+can_access (List, janitor) ->
+ lists:member(janitor, List).
diff --git a/src/shared/struct/shr_player.erl b/src/shared/struct/shr_player.erl
index 6364eb2..2b394c6 100644
--- a/src/shared/struct/shr_player.erl
+++ b/src/shared/struct/shr_player.erl
@@ -48,6 +48,7 @@
get_maps/1,
get_characters/1,
+ set_id/2,
set_username/2,
set_password/2,
new_token/1,
@@ -138,6 +139,9 @@ get_maps (Player) -> Player#player.maps.
-spec get_characters (type()) -> list(binary()).
get_characters (Player) -> Player#player.characters.
+-spec set_id (binary(), type()) -> type().
+set_id (Val, Player) -> Player#player{ id = Val }.
+
-spec set_username (binary(), type()) -> type().
set_username (Val, Player) -> Player#player{ username = Val }.