Andrii Zadorozhnii 11 лет назад
Родитель
Сommit
d78b9aa22d
3 измененных файлов с 26 добавлено и 26 удалено
  1. 3 3
      include/users.hrl
  2. 12 23
      src/kvs.erl
  3. 11 0
      src/kvs_user.erl

+ 3 - 3
include/users.hrl

@@ -30,13 +30,13 @@
         aclver}).
 
 -record(user_status,{
-        username :: username_type(),
+        email,
         last_login,
         show_splash = true :: boolean()
         }).
 
 -record(user_info,{
-        username :: username_type(),
+        email,
         name,
         surname,
         age,
@@ -46,7 +46,7 @@
         score = 0 :: integer()}).
 
 -record(user_address, {
-        username :: username_type(),
+        email,
         address = "",
         city = "",
         district = "",

+ 12 - 23
src/kvs.erl

@@ -72,6 +72,7 @@ add_seq_ids() ->
     Init("user_transaction"),
     Init("user_product"),
     Init("user_payment"),
+    Init("user_status"),
     Init("transaction"),
     Init("membership"),
     Init("payment"),
@@ -90,39 +91,27 @@ add_translations() ->
         kvs:put(#translation{english = English, lang = Lang,  word = Word}) end, ?URL_DICTIONARY).
 
 add_sample_users() ->
+  Groups = [],
+  UserList = [],
 
-    Groups = [],
+  kvs:put(Groups),
 
-    UserList = [
-        #user{username = "maxim", password="pass", name = "Maxim", surname = "Sokhatsky",
-            feeds=[{feed, kvs_feed:create()}, {direct, kvs_feed:create()},{starred,kvs_feed:create()},{pinned,kvs_feed:create()}], type = admin,
-            sex=m, status=ok, team = kvs_meeting:create_team("tours"),  email="maxim@synrc.com"},
-        #user{username = "doxtop", password="pass", name = "Andrii", surname = "Zadorozhnii",
-            feeds=[{feed, kvs_feed:create()}, {direct, kvs_feed:create()},{starred,kvs_feed:create()},{pinned,kvs_feed:create()}], type = admin,
-            sex=m, status=ok, team = kvs_meeting:create_team("tours"),  email="doxtop@synrc.com"},
-        #user{username = "akalenuk", password="pass", name = "Alexander", surname = "Kalenuk",
-            feeds=[{feed, kvs_feed:create()}, {direct, kvs_feed:create()},{starred,kvs_feed:create()},{pinned,kvs_feed:create()}], type = admin,
-            sex=m, status=ok, team = kvs_meeting:create_team("tours"),  email="akalenuk@gmail.com"}
-    ],
+  {ok, Quota} = kvs:get(config,"accounts/default_quota", 300),
 
-    kvs:put(Groups),
-
-    {ok, Quota} = kvs:get(config,"accounts/default_quota", 300),
-
-    [ begin
+  [ begin
         [ kvs_group:join(Me#user.username,G#group.id) || G <- Groups ],
           kvs_account:create_account(Me#user.username),
           kvs_account:transaction(Me#user.username, quota, Quota, #tx_default_assignment{}),
           kvs:put(Me#user{password = kvs:sha(Me#user.password)})
-      end || Me <- UserList ],
+    end || Me <- UserList ],
 
-    kvs_acl:define_access({user, "maxim"},    {feature, admin}, allow),
-    kvs_acl:define_access({user_type, admin}, {feature, admin}, allow),
+  %kvs_acl:define_access({user, "maxim"},    {feature, admin}, allow),
+  %kvs_acl:define_access({user_type, admin}, {feature, admin}, allow),
 
-    [ kvs_user:subscribe(Me#user.username, Her#user.username) || Her <- UserList, Me <- UserList, Her /= Me ],
-    [ kvs_user:init_mq(U) || U <- UserList ],
+  [ kvs_user:subscribe(Me#user.username, Her#user.username) || Her <- UserList, Me <- UserList, Her /= Me ],
+  [ kvs_user:init_mq(U) || U <- UserList ],
 
-    ok.
+  ok.
 
 version() -> DBA=?DBA, DBA:version().
 

+ 11 - 0
src/kvs_user.erl

@@ -127,6 +127,17 @@ user_by_email(Email) ->
         {ok,{_,User,_}} -> kvs:get(user,User);
         Else -> Else end.
 
+handle_notice([kvs_user, login, user, Who, update_status],
+              Message,
+              #state{owner=Who} = State) ->
+  error_logger:info_msg("update status ~p", [Who]),
+  Update = case kvs:get(user_status, Who) of
+    {error, not_found} -> #user_status{email = Who, last_login = erlang:now()};
+    {ok, UserStatus} -> UserStatus#user_status{last_login = erlang:now()} end,
+  kvs:put(Update),
+
+  {noreply, State};
+
 handle_notice(["kvs_user", "subscribe", Who] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
     {Whom} = Message,