google.erl 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. -module(google).
  2. -author('Andrii Zadorozhnii').
  3. -include_lib("avz/include/avz.hrl").
  4. -include_lib("nitro/include/nitro.hrl").
  5. -include_lib("n2o/include/wf.hrl").
  6. -include_lib("kvs/include/user.hrl").
  7. -compile(export_all).
  8. -export(?API).
  9. -define(GPLUS_CLIENT_ID, application:get_env(web, gplus_client_id, [])).
  10. -define(GPLUS_COOKIE_POLICY, application:get_env(web, gplus_cookiepolicy, [])).
  11. api_event(plusLogin, Args, _)-> {JSArgs} = ?AVZ_JSON:decode(list_to_binary(Args)), avz:login(google, JSArgs).
  12. registration_data(Props, google, Ori)->
  13. Id = proplists:get_value(<<"id">>, Props),
  14. _Name = proplists:get_value(<<"name">>, Props),
  15. Image = proplists:get_value(<<"picture">>, Props),
  16. GivenName = proplists:get_value(<<"given_name">>, Props),
  17. FamilyName = proplists:get_value(<<"family_name">>, Props),
  18. Email = email_prop(Props,google),
  19. Ori#user{ id = Email,
  20. display_name = proplists:get_value(<<"displayName">>, Props),
  21. images = avz:update({google_avatar,Image},Ori#user.images),
  22. email = Email,
  23. names = GivenName,
  24. surnames = FamilyName,
  25. tokens = avz:update({google,Id},Ori#user.tokens),
  26. register_date = os:timestamp(),
  27. sex = proplists:get_value(<<"gender">>, Props),
  28. status = ok }.
  29. email_prop(Props, _) -> proplists:get_value(<<"email">>, Props).
  30. login_button()-> application:get_env(avz,google_button,#panel{id=plusloginbtn, class=["btn-group"], body=
  31. #link{class=[btn, "btn-google-plus", "btn-large","btn-lg"],
  32. body=[#i{class=[fa,"fa-google-plus","fa-lg","icon-google-plus", "icon-large"]}, <<"Google">>] }}).
  33. event(_) -> ok.
  34. callback() -> ok.
  35. sdk() ->
  36. wf:wire(#api{name=plusLogin, tag=plus}),
  37. #dtl{bind_script=false, file="google_sdk", ext="dtl", folder="priv/static/js",
  38. bindings=[{loginbtnid, plusloginbtn},{clientid, ?GPLUS_CLIENT_ID},{cookiepolicy, ?GPLUS_COOKIE_POLICY}]}.