Просмотр исходного кода

add display name and google plus id

Andrii Zadorozhnii 12 лет назад
Родитель
Сommit
a5d116c388
4 измененных файлов с 20 добавлено и 8 удалено
  1. 3 0
      include/users.hrl
  2. 12 7
      src/kvs_user.erl
  3. 1 0
      src/store_mnesia.erl
  4. 4 1
      src/store_riak.erl

+ 3 - 0
include/users.hrl

@@ -2,9 +2,11 @@
 
 -record(user, {
         username :: username_type() | '_', %% Dialyzer and record MatchSpec warnings http://j.mp/vZ8670
+        display_name,
         password,
         facebook_id,
         twitter_id,
+        googleplus_id,
         auth,
         email,
         avatar,
@@ -89,6 +91,7 @@
 
 -record(twitter_oauth, {user_id, token, secret}).
 -record(facebook_oauth, {user_id, access_token}).
+-record(googleplus_oauth, {user_id, access_token}).
 
 -define(ACTIVE_USERS_TOP_N, 12).
 

+ 12 - 7
src/kvs_user.erl

@@ -9,9 +9,8 @@
 -include_lib("mqs/include/mqs.hrl").
 -compile(export_all).
 
-register(#user{username=UserName, email=Email, facebook_id = FacebookId} = Registeration) ->
-
-    EmailUser = case check_username(UserName, FacebookId) of
+register(#user{username=UserName, email=Email, facebook_id = FacebookId, googleplus_id=GooglePlusId} = Registeration) ->
+    EmailUser = case check_username(UserName, FacebookId, GooglePlusId) of
         {error, Reason} -> {error, Reason};
         {ok, Name} -> case kvs_user:get({email, Email}) of
             {error, _} -> {ok, Name};
@@ -37,7 +36,7 @@ process_register(#user{username=U} = RegisterData0) ->
         pinned   = kvs_feed:create(),
         starred  = kvs_feed:create(),
         password = HashedPassword },
-
+    error_logger:info_msg("PUT USER ~p", [U]),
     kvs:put(RegisterData),
     kvs_account:create_account(U),
     {ok, DefaultQuota} = kvs:get(config, "accounts/default_quota",  300),
@@ -46,11 +45,11 @@ process_register(#user{username=U} = RegisterData0) ->
     %mqs:notify([user, init], {U, RegisterData#user.feed}),
     {ok, U}.
 
-check_username(Name, FbId) ->
+check_username(Name, Fbid, Gid) ->
     case kvs_user:get(Name) of
         {error, _} -> {ok, Name};
-        {ok, User} when FbId =/= undefined ->
-            check_username(User#user.username  ++ integer_to_list(crypto:rand_uniform(0,10)), FbId);
+        {ok, User} when Fbid =/= undefined orelse Gid =/= undefined->
+            check_username(User#user.username  ++ integer_to_list(crypto:rand_uniform(0,10)), Fbid, Gid);
         {ok, _}-> {error, username_taken} end.
 
 delete(UserName) ->
@@ -67,6 +66,7 @@ delete(UserName) ->
         E -> E end.
 
 get({facebook, FBId}) -> user_by_facebook_id(FBId);
+get({googleplus, GId}) -> user_by_googleplus_id(GId);
 get({email, Email}) -> user_by_email(Email);
 get(UId) -> kvs:get(user, UId).
 
@@ -148,6 +148,11 @@ user_by_facebook_id(FBId) ->
         {ok,{_,User,_}} -> kvs:get(user,User);
         Else -> Else end.
 
+user_by_googleplus_id(GId) ->
+    case kvs:get(googleplus,GId) of
+        {ok,{_,User,_}} -> kvs:get(user,User);
+        Else -> Else end.
+
 user_by_email(Email) ->
     case kvs:get(email,Email) of
         {ok,{_,User,_}} -> kvs:get(user,User);

+ 1 - 0
src/store_mnesia.erl

@@ -54,6 +54,7 @@ initialize() ->
     add_table_index(entry, entry_id),
     add_table_index(entry, from),
     add_table_index(user, facebook_id),
+    add_table_index(user, googleplus_id),
     add_table_index(user, email),
     ok.
 

+ 4 - 1
src/store_riak.erl

@@ -127,7 +127,10 @@ post_write_hooks(R,C) ->
                     _ -> C:put(make_object({email, R#user.username, R#user.email})) end,
                 case R#user.facebook_id of
                   undefined -> nothing;
-                  _ -> C:put(make_object({facebook, R#user.username, R#user.facebook_id})) end;
+                  _ -> C:put(make_object({facebook, R#user.username, R#user.facebook_id})) end,
+                case R#user.googleplus_id of
+                  undefined -> nothing;
+                  _ -> C:put(make_object({googleplus, R#user.username, #user.googleplus_id})) end;
         _ -> continue end.
 
 get(Tab, Key) ->