google.erl 1.9 KB

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