avz.erl 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. -module(avz).
  2. -author('Maxim Sokhatsky').
  3. -compile(export_all).
  4. -include_lib("avz/include/avz.hrl").
  5. -include_lib("n2o/include/wf.hrl").
  6. -include_lib("kvs/include/user.hrl").
  7. callbacks(Methods) -> [ M:callback() || M <- Methods].
  8. sdk(Methods) -> [ M:sdk() || M <- Methods].
  9. buttons(Methods) -> [ M:login_button() || M <- Methods].
  10. event(init) -> [];
  11. event(logout) -> wf:user(undefined), wf:redirect(?LOGIN_PAGE);
  12. event(to_login) -> wf:redirect(?LOGIN_PAGE);
  13. event({register, #user{}=U}) -> kvs:add(U), login_user(U); % sample
  14. event({login, #user{}=U, N}) ->
  15. Updated = avz_userhelper:updateUser(U,N),
  16. kvs:put(Updated),
  17. login_user(Updated); % sample
  18. event({Method,Event}) -> Method:event({Method,Event});
  19. event(Ev) -> error_logger:info_msg("Page Event ~p",[Ev]).
  20. api_event(plusLogin, Args, Term) -> google:api_event(plusLogin, Args, Term);
  21. api_event(fbLogin, Args, Term) -> facebook:api_event(fbLogin, Args, Term);
  22. api_event(winLogin, Args, Term) -> microsoft:api_event(winLogin, Args, Term);
  23. api_event(Name, Args, Term) -> error_logger:info_msg("Unknown API event: ~p ~p ~p",[Name, Args, Term]).
  24. login_user(User) -> wf:user(User), wf:redirect(?AFTER_LOGIN).
  25. login(_Key, [{error, E}|_Rest])-> error_logger:info_msg("oauth error: ~p", [E]);
  26. login(Key, Args) ->
  27. n2o_session:ensure_sid([],?CTX,[]),
  28. wf:info("AVZ MODULE: ~p",[?CTX#cx.module]),
  29. case kvs:get(user,Key:email_prop(Args,Key)) of
  30. {ok,Existed} ->
  31. RegData = Key:registration_data(Args, Key, Existed),
  32. (?CTX#cx.module):event({login, Existed, RegData});
  33. {error,_} ->
  34. RegData = Key:registration_data(Args, Key, #user{}),
  35. (?CTX#cx.module):event({register, RegData});
  36. U -> wf:info("avz:login unknown: ~p",[U]) end.