Browse Source

Add more properties to registered user. cut the user record for case when user_ext was redefined.

Andrii Zadorozhnii 7 years ago
parent
commit
b65c6554d1
2 changed files with 13 additions and 6 deletions
  1. 6 3
      src/avz.erl
  2. 7 3
      src/email.erl

+ 6 - 3
src/avz.erl

@@ -35,12 +35,15 @@ api_event(Name, Args, Term)      -> wf:info(?MODULE,"Unknown API event: ~p ~p ~p
 login_user(User) -> wf:user(User), wf:redirect(?AFTER_LOGIN).
 login(_Key, [{error, E}|_Rest])-> wf:info(?MODULE,"Auth Error: ~p", [E]);
 login(Key, Args) ->
-
   LoginFun = fun(K) ->
     Index = proplists:get_value(Key:index(K), Args),
     case kvs:index(user,K,Index) of
       [Exists|_] ->
-        RegData = Key:registration_data(Args, Key, Exists),
+        Diff = tuple_size(Exists) - tuple_size(#user{}),
+        {It, UsrExt} = lists:split(tuple_size(#iterator{}), tuple_to_list(Exists)),
+        {_,Usr} = lists:split(Diff, UsrExt),
+
+        RegData = Key:registration_data(Args, Key, list_to_tuple(lists:append([It,Usr]))),
         (?CTX#cx.module):event({login, Exists, RegData}),
         true;
       _ -> false end end,
@@ -49,7 +52,7 @@ login(Key, Args) ->
 
   LoggedIn = lists:any(LoginFun, Keys),
 
-  if (LoggedIn =:= true) -> ok; true -> 
+  if (LoggedIn =:= true) -> true; true -> 
     RegData = Key:registration_data(Args, Key, #user{}),
     (?CTX#cx.module):event({register, RegData})
   end.

+ 7 - 3
src/email.erl

@@ -9,15 +9,19 @@
 
 registration_data(Props, email, Ori)->
   Email = email_prop(Props, email),
-  Ori#user{ display_name = Email,
+  
+  Ori#user{ display_name = proplists:get_value(<<"display_name">>, Props, Email),
             email = Email,
+            names    = proplists:get_value(<<"first_name">>, Props,[]),
+            surnames = proplists:get_value(<<"last_name">>,  Props,[]),
             register_date = os:timestamp(),
             tokens = avz:update({email,Email},Ori#user.tokens),
-            status = ok,
+            status = proplists:get_value(<<"status">>, Props, ok),
+            type   = proplists:get_value(<<"type">>, Props,[]),
             password = avz:sha(proplists:get_value(<<"password">>,Props))}.
 
 index(K) -> wf:to_binary(K).
-email_prop(Props, _) -> binary_to_list(proplists:get_value(<<"email">>, Props)).
+email_prop(Props, _) -> proplists:get_value(<<"email">>, Props).
 
 login_button() -> #button{id=login, body= <<"Sign in">>, postback={email, loginemail}, source=[user,pass]}.
 event({email,loginemail}) -> avz:login(email, [{<<"email">>, wf:q(user)}, {<<"password">>, wf:q(pass)}]);