Browse Source

export, fix path include err, deps

221V 1 year ago
parent
commit
f346efc4de
14 changed files with 168 additions and 50 deletions
  1. 2 2
      .gitignore
  2. 0 8
      include/avz.hrl
  3. 6 6
      rebar.config
  4. 1 1
      src/avz.app.src
  5. 21 6
      src/avz.erl
  6. 5 0
      src/avz_app.erl
  7. 8 3
      src/avz_sup.erl
  8. 2 0
      src/avz_validator.erl
  9. 17 4
      src/email.erl
  10. 18 4
      src/facebook.erl
  11. 23 4
      src/github.erl
  12. 19 4
      src/google.erl
  13. 22 4
      src/microsoft.erl
  14. 24 4
      src/twitter.erl

+ 2 - 2
.gitignore

@@ -1,2 +1,2 @@
-ebin
-
+ebin/
+deps/

+ 0 - 8
include/avz.hrl

@@ -2,14 +2,6 @@
 -define(AFTER_LOGIN, wf:config(avz,after_login_page,"/account")).
 -define(LOGIN_PAGE, wf:config(avz,login_page,"/login")).
 -define(METHODS, [facebook,google,github,twitter,microsoft]).
--define(API,[sdk/0,               % JavaScript for page embedding for JavaScript based login methods
-             login_button/0,      % HTML Button for page embedding
-             event/1,             % Page Event for HTTP redirect based login methods
-             api_event/3,         % Page Event for JavaScript based login methods
-             email_prop/2,
-             callback/0,          % Callback part of HTTP redirect based login methods
-             registration_data/3  % Process Parameters
-            ]).
 -ifndef(AVZ_JSON).
 -define(AVZ_JSON, (application:get_env(avz,json,jsone))).
 -endif.

+ 6 - 6
rebar.config

@@ -1,11 +1,11 @@
 {lib_dirs, ["deps",".."]}.
 {deps_dir, ["deps"]}.
-{deps, [
-    %{nitro,         ".*", {https, "https://github.com/221V/nitro_2.4.git",      {branch, "master"}}},  %{nitro,         ".*", {git, "git@github.com:synrc/nitro.git",         {tag, "2.4"}}},
-    %{n2o,           ".*", {https, "https://git.4dev.win/n4u/n4u.git",           {tag, "4.4"}}},        %{n2o,           ".*", {git, "git@github.com:synrc/n2o.git",           {tag, "4.4"}}},
-    %{kvs,           ".*", {https, "https://git.4dev.win/n4u/kvs.git",           {tag, "3.9.1"}}},      %{kvs,           ".*", {git, "git@github.com:synrc/kvs.git",           {tag, "3.9.1"}}},
-    %{erlydtl,       ".*", {https, "https://git.4dev.win/n4u/erlydtl.git",       {tag, "0.8.0"}}},      %{erlydtl,       ".*", {git, "git@github.com:evanmiller/erlydtl.git",  {tag, "0.8.0"}}},
-    %{oauth,         ".*", {https, "https://git.4dev.win/n4u/erlang-oauth.git",  {tag, "v1.6.0"}}}      %{oauth,         ".*", {git, "git@github.com:tim/erlang-oauth.git",    {tag, "v1.6.0"}}}
+{deps, [ %% uncomment for compile %% moved to app deps
+    %{nitro,         ".*", {https, "https://git.4dev.win/n4u/nitro.git",         {tag, "6.6.3-erl19"}}},     %{nitro,         ".*", {git, "git@github.com:synrc/nitro.git",         {tag, "2.4"}}},
+    %{n4u,           ".*", {https, "https://git.4dev.win/n4u/n4u.git",           {tag, "4.4.1-erl19"}}},     %{n2o,           ".*", {git, "git@github.com:synrc/n2o.git",           {tag, "4.4"}}},
+    %{kvs,           ".*", {https, "https://git.4dev.win/n4u/kvs.git",           {tag, "3.9.1-erl19"}}},     %{kvs,           ".*", {git, "git@github.com:synrc/kvs.git",           {tag, "3.9.1"}}},
+    %{erlydtl,       ".*", {https, "https://git.4dev.win/n4u/erlydtl.git",       {tag, "0.12.1-erl19"}}},    %{erlydtl,       ".*", {git, "git@github.com:evanmiller/erlydtl.git",  {tag, "0.8.0"}}},
+    %{oauth,         ".*", {https, "https://git.4dev.win/n4u/erlang-oauth.git",  {tag, "v1.6.0"}}}           %{oauth,         ".*", {git, "git@github.com:tim/erlang-oauth.git",    {tag, "v1.6.0"}}}
 ]}.
 {erlydtl_opts, [
     {doc_root,   "priv"},

+ 1 - 1
src/avz.app.src

@@ -1,7 +1,7 @@
 {application, avz,
  [
   {description, "AVZ VXZ Token System"},
-  {vsn, "2.9"},
+  {vsn, "4.4.1"},
   {registered, []},
   {applications, [kernel, stdlib]},
   {mod, { avz_app, []}},

+ 21 - 6
src/avz.erl

@@ -1,11 +1,28 @@
 -module(avz).
--author('Maxim Sokhatsky').
--compile([export_all, nowarn_export_all]).
+%%-author('Maxim Sokhatsky').
+
 -include_lib("avz/include/avz.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl"). %% todo unbind avz -- todo avz usage example without nitro and n4u (n2o v4.4 fork) framework
 -include_lib("kvs/include/metainfo.hrl").
 -include_lib("kvs/include/user.hrl").
 
+
+-export([
+  sha/1,
+  update/2,
+  coalesce/2,
+  merge/2,
+  callbacks/1,
+  sdk/1,
+  buttons/1,
+  event/1,
+  api_event/3,
+  login_user/1,
+  login/2,
+  version/0
+]).
+
+
 sha(Pass) -> crypto:hmac(wf:config(n2o,hmac,sha256),n2o_secret:secret(),wf:to_binary(Pass)).
 update({K,V},P) -> wf:setkey(K,1,case P of undefined -> []; _P -> _P end,{K,V}).
 
@@ -35,7 +52,6 @@ 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
@@ -46,12 +62,11 @@ login(Key, Args) ->
       _ -> false end end,
   
   Keys = [K || M<-kvs:modules(),T<-(M:metainfo())#schema.tables, T#table.name==user, K<-T#table.keys],
-
   LoggedIn = lists:any(LoginFun, Keys),
-
   if (LoggedIn =:= true) -> ok; true -> 
     RegData = Key:registration_data(Args, Key, #user{}),
     (?CTX#cx.module):event({register, RegData})
   end.
 
 version() -> proplists:get_value(vsn,element(2,application:get_all_key(?MODULE))).
+

+ 5 - 0
src/avz_app.erl

@@ -1,10 +1,15 @@
 -module(avz_app).
+
 -behaviour(application).
+
 -export([start/2, stop/1]).
 
+
 start(_StartType, _StartArgs) ->
   application:start(asn1),
   application:start(public_key),
   application:start(ssl),
   avz_sup:start_link().
+
 stop(_State) -> ok.
+

+ 8 - 3
src/avz_sup.erl

@@ -1,9 +1,14 @@
 -module(avz_sup).
+
 -behaviour(supervisor).
--export([start_link/0, init/1]).
--compile([export_all, nowarn_export_all]).
+
 -include_lib ("avz/include/avz.hrl").
 
+
+-export([start_link/0, init/1]).
+
+
 start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-init([]) -> {ok, {{one_for_one, 5, 10}, []}}.
+
+init([]) -> {ok, {{one_for_one, 10, 10}, []}}.
 

+ 2 - 0
src/avz_validator.erl

@@ -1,4 +1,5 @@
 -module(avz_validator).
+
 -export([is_email/1]).
 
 is_email(Value) when is_list(Value) orelse is_binary(Value) ->
@@ -7,3 +8,4 @@ is_email(Value) when is_list(Value) orelse is_binary(Value) ->
         _ -> false
     end;
 is_email(_) -> false.
+

+ 17 - 4
src/email.erl

@@ -1,11 +1,24 @@
 -module(email).
--author('Andrii Zadorozhnii').
+%%-author('Andrii Zadorozhnii').
+
 -include_lib("avz/include/avz.hrl").
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl").
 -include_lib("kvs/include/user.hrl").
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1
+]).
+
 
 registration_data(Props, email, Ori)->
   Email = email_prop(Props, email),

+ 18 - 4
src/facebook.erl

@@ -1,15 +1,28 @@
 -module(facebook).
--author('Andrii Zadorozhnii').
+%%-author('Andrii Zadorozhnii').
+
 -include_lib("avz/include/avz.hrl").
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl"). %% todo unbind avz -- todo avz usage example without nitro and n4u (n2o v4.4 fork) framework
 -include_lib("kvs/include/user.hrl").
 
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1
+]).
+
 
 -define(FB_APP_ID,    application:get_env(avz, fb_id,        [])).
 
+
 callback() -> ok.
 event({facebook,_Event}) -> wf:wire("fb_login();"), ok.
 api_event(fbLogin, Args, _Term) -> {JSArgs} = ?AVZ_JSON:decode(list_to_binary(Args)), avz:login(facebook, JSArgs).
@@ -42,3 +55,4 @@ sdk() ->
     wf:wire(#api{name=fbLogin, tag=fb}),
     [ #dtl{bind_script=false, file="facebook_sdk", ext="dtl", folder="priv/static/js",
         bindings=[{appid, ?FB_APP_ID}] } ].
+

+ 23 - 4
src/github.erl

@@ -1,11 +1,28 @@
 -module(github).
--author('Andrii Zadorozhnii').
+%%-author('Andrii Zadorozhnii').
+
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl").
 -include_lib("kvs/include/user.hrl").
 -include_lib("avz/include/avz.hrl").
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1,
+  user/1,
+  authorize_url/0,
+  get_access_token/1,
+  api_call/2
+]).
+
 
 -define(CLIENT_ID,        application:get_env(avz, github_client_id,     [])).
 -define(CLIENT_SECRET,    application:get_env(avz, github_client_secret, [])).
@@ -15,6 +32,7 @@
 -define(API_URI,          "https://api.github.com").
 -define(REQ_HEADER,       [{"User-Agent", "Erlang PaaS"}]).
 
+
 user(Props) -> api_call("/user", Props).
 
 authorize_url() -> oauth:uri(?AUTHORIZE_URI, [{"client_id", ?CLIENT_ID}, {"state", "state"}]).
@@ -77,3 +95,4 @@ login_button() ->
 
 api_event(_,_,_) -> ok.
 event({github,logingithub}) -> wf:redirect(github:authorize_url()).
+

+ 19 - 4
src/google.erl

@@ -1,11 +1,24 @@
 -module(google).
--author('Andrii Zadorozhnii').
+%%-author('Andrii Zadorozhnii').
+
 -include_lib("avz/include/avz.hrl").
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl").
 -include_lib("kvs/include/user.hrl").
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1
+]).
+
 
 -define(G_CLIENT_ID,     application:get_env(avz, g_client_id,    [])).
 -define(G_COOKIE_POLICY, application:get_env(avz, g_cookiepolicy, [])).
@@ -17,6 +30,7 @@
 
 -define(ATTS, #{email => <<"U3">>, name => <<"ig">>, id => <<"Eea">>, image => <<"Paa">>}).
 
+
 api_event(gLogin, Args, _) -> {JSArgs} = ?AVZ_JSON:decode(list_to_binary(Args)), avz:login(google, JSArgs);
 api_event(gLoginFail, Args, _) -> wf:info(?MODULE, "Login failed ~p~n", [Args]).
 
@@ -55,3 +69,4 @@ sdk() ->
           {width,       ?G_BTN_WIDTH},
           {theme,       ?G_BTN_THEME},
           {longtitle,   ?G_BTN_LONGTITLE} ]}.
+

+ 22 - 4
src/microsoft.erl

@@ -1,11 +1,27 @@
 -module(microsoft).
--author('Maxim Sokhatsku').
+%%-author('Maxim Sokhatsku').
+
 -include_lib("avz/include/avz.hrl").
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl").
 -include_lib("kvs/include/user.hrl").
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1,
+  authorize_url/0,
+  get_access_token/1,
+  api_call/2
+]).
+
 
 -define(OAUTH_URI,      "https://login.microsoftonline.com/common/oauth2/v2.0").
 -define(API_URI,        "https://graph.microsoft.com/v1.0/").
@@ -21,6 +37,7 @@
 
 -define(ATTS, #{email => <<"userPrincipalName">>}).
 
+
 authorize_url() -> 
   Params = [{"client_id", ?CLIENT_ID},{"redirect_uri", ?OAUTH_REDIRECT},{"response_type", "code"},{"scope", ?SCOPE}],
   oauth:uri(?AUTHORIZE, Params).
@@ -100,3 +117,4 @@ callback() ->
   _ -> skip end.
 sdk() -> [].
 event({microsoft, _}) -> wf:redirect(microsoft:authorize_url()).
+

+ 24 - 4
src/twitter.erl

@@ -1,17 +1,37 @@
 -module(twitter).
--author('Andrii Zadorozhnii').
+%%-author('Andrii Zadorozhnii').
+
 -include_lib("nitro/include/nitro.hrl").
--include_lib("n2o/include/wf.hrl").
+-include_lib("n4u/include/wf.hrl").
 -include_lib("avz/include/avz.hrl").
 -include_lib("kvs/include/user.hrl").
--compile([export_all, nowarn_export_all]).
--export(?API).
+
+
+-export([
+  sdk/0,               % JavaScript for page embedding for JavaScript based login methods
+  login_button/0,      % HTML Button for page embedding
+  event/1,             % Page Event for HTTP redirect based login methods
+  api_event/3,         % Page Event for JavaScript based login methods
+  email_prop/2,
+  callback/0,          % Callback part of HTTP redirect based login methods
+  registration_data/3, % Process Parameters
+  
+  index/1,
+  get_request_token/0,
+  get_access_token/2,
+  authenticate_url/1,
+  authorize_url/1,
+  show/1
+]).
+
+
 -define(CONSUMER_KEY,    application:get_env(avz, tw_consumer_key,    [])).
 -define(CONSUMER_SECRET, application:get_env(avz, tw_consumer_secret, [])).
 -define(CONSUMER,        {?CONSUMER_KEY, ?CONSUMER_SECRET, hmac_sha1}).
 
 -define(ATTS, #{email => <<"screen_name">>}).
 
+
 registration_data(Props, twitter, Ori)->
     Id = proplists:get_value(<<"id_str">>, Props),
     UserName = binary_to_list(proplists:get_value(<<"screen_name">>, Props)),