summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/struct/shr_player.erl')
-rw-r--r--src/shared/struct/shr_player.erl39
1 files changed, 28 insertions, 11 deletions
diff --git a/src/shared/struct/shr_player.erl b/src/shared/struct/shr_player.erl
index 2b394c6..13fa1ed 100644
--- a/src/shared/struct/shr_player.erl
+++ b/src/shared/struct/shr_player.erl
@@ -17,7 +17,8 @@
email :: binary(),
last_active :: integer(),
maps :: list(binary()),
- characters :: list(binary())
+ roster_id :: binary(),
+ inventory_id :: binary()
}
).
@@ -46,7 +47,8 @@
get_email/1,
get_last_active/1,
get_maps/1,
- get_characters/1,
+ get_inventory_id/1,
+ get_roster_id/1,
set_id/2,
set_username/2,
@@ -55,7 +57,8 @@
set_email/2,
refresh_active/1,
set_maps/2,
- set_characters/2
+ set_inventory_id/2,
+ set_roster_id/2
]
).
@@ -69,7 +72,8 @@
get_email_field/0,
get_last_active_field/0,
get_maps_field/0,
- get_characters_field/0
+ get_inventory_id_field/0,
+ get_roster_id_field/0
]
).
@@ -85,6 +89,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec secure_value (binary(), binary()) -> binary().
secure_value (Salt, Val) ->
+ % TODO: Maybe it would be a good idea to include the user's IP in there as
+ % well. This would ensure that sessions alway use the same server (and thus,
+ % the same caches), and make timed cache exploits easier to prevent.
SaltedVal = erlang:iolist_to_binary([Salt, Val]),
HashedSaltedVal = crypto:hash(sha384, SaltedVal),
@@ -105,7 +112,8 @@ new (ID, Username, Password, Email) ->
email = Email,
last_active = 0,
maps = [],
- characters = []
+ inventory_id = <<"0">>,
+ roster_id = <<"0">>
},
S0Result = set_password(Password, Result),
@@ -136,8 +144,11 @@ get_last_active (Player) -> Player#player.last_active.
-spec get_maps (type()) -> list(binary()).
get_maps (Player) -> Player#player.maps.
--spec get_characters (type()) -> list(binary()).
-get_characters (Player) -> Player#player.characters.
+-spec get_roster_id (type()) -> binary().
+get_roster_id (Player) -> Player#player.roster_id.
+
+-spec get_inventory_id (type()) -> binary().
+get_inventory_id (Player) -> Player#player.inventory_id.
-spec set_id (binary(), type()) -> type().
set_id (Val, Player) -> Player#player{ id = Val }.
@@ -175,8 +186,11 @@ refresh_active (Player) ->
-spec set_maps (list(binary()), type()) -> type().
set_maps (Maps, Player) -> Player#player{ maps = Maps }.
--spec set_characters (list(binary()), type()) -> type().
-set_characters (Characters, Player) -> Player#player{ characters = Characters }.
+-spec set_roster_id (binary(), type()) -> type().
+set_roster_id (RosterID, Player) -> Player#player{ roster_id = RosterID }.
+
+-spec set_inventory_id (binary(), type()) -> type().
+set_inventory_id (InvID, Player) -> Player#player{ inventory_id = InvID }.
-spec get_id_field () -> non_neg_integer().
get_id_field () -> #player.id.
@@ -199,8 +213,11 @@ get_last_active_field () -> #player.last_active.
-spec get_maps_field () -> non_neg_integer().
get_maps_field () -> #player.maps.
--spec get_characters_field () -> non_neg_integer().
-get_characters_field () -> #player.characters.
+-spec get_roster_id_field () -> non_neg_integer().
+get_roster_id_field () -> #player.roster_id.
+
+-spec get_inventory_id_field () -> non_neg_integer().
+get_inventory_id_field () -> #player.inventory_id.
-spec password_is (binary(), type()) -> boolean().
password_is (Val, Player) ->