Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KAZOO-4938: move is_superduper_admin from cb_modules_util to cb_context #2505

Merged
merged 2 commits into from Sep 5, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 29 additions & 0 deletions applications/crossbar/src/cb_context.erl
Expand Up @@ -25,6 +25,8 @@

,is_authenticated/1

,is_superduper_admin/1

%% Getters / Setters
,setters/2
,new/0
Expand Down Expand Up @@ -188,6 +190,33 @@ account_doc(Context) ->
is_authenticated(#cb_context{auth_doc='undefined'}) -> 'false';
is_authenticated(#cb_context{}) -> 'true'.

%%--------------------------------------------------------------------
%% @public
%% @doc
%% Returns true if the request contains a system admin module.
%% @end
%%--------------------------------------------------------------------
-spec is_superduper_admin(api_ne_binary() | context()) -> boolean().
is_superduper_admin('undefined') -> 'false';
is_superduper_admin(AccountId=?NE_BINARY) ->
lager:debug("checking for superduper admin: ~s", [AccountId]),
case kz_account:fetch(AccountId) of
{'ok', JObj} ->
case kz_account:is_superduper_admin(JObj) of
'true' ->
lager:debug("the requestor is a superduper admin"),
'true';
'false' ->
lager:debug("the requestor is not a superduper admin"),
'false'
end;
{'error', _E} ->
lager:debug("not authorizing, error during lookup: ~p", [_E]),
'false'
end;
is_superduper_admin(Context) ->
is_superduper_admin(auth_account_id(Context)).

auth_token_type(#cb_context{auth_token_type=AuthTokenType}) -> AuthTokenType.
auth_token(#cb_context{auth_token=AuthToken}) -> AuthToken.
auth_doc(#cb_context{auth_doc=AuthDoc}) -> AuthDoc.
Expand Down
4 changes: 2 additions & 2 deletions applications/crossbar/src/modules/cb_accounts.erl
Expand Up @@ -200,12 +200,12 @@ validate_account_path(Context, AccountId, ?SIBLINGS, ?HTTP_GET) ->
validate_account_path(Context, AccountId, ?PARENTS, ?HTTP_GET) ->
load_parents(AccountId, prepare_context('undefined', Context));
validate_account_path(Context, AccountId, ?RESELLER, ?HTTP_PUT) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' -> load_account(AccountId, prepare_context(AccountId, Context));
'false' -> cb_context:add_system_error('forbidden', Context)
end;
validate_account_path(Context, AccountId, ?RESELLER, ?HTTP_DELETE) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' -> load_account(AccountId, prepare_context(AccountId, Context));
'false' -> cb_context:add_system_error('forbidden', Context)
end;
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_alerts.erl
Expand Up @@ -120,7 +120,7 @@ delete(Context, _) ->
validate_alerts(Context, ?HTTP_GET) ->
summary(Context);
validate_alerts(Context, ?HTTP_PUT) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' -> create(Context);
'false' ->
cb_context:add_system_error('forbidden', Context)
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_ledgers.erl
Expand Up @@ -117,7 +117,7 @@ authorize_request(Context, _, ?HTTP_GET) ->
-spec authorize_create(cb_context:context()) -> boolean().
authorize_create(Context) ->
IsAuthenticated = cb_context:is_authenticated(Context),
IsSuperDuperAdmin = cb_modules_util:is_superduper_admin(Context),
IsSuperDuperAdmin = cb_context:is_superduper_admin(Context),
IsReseller = cb_context:reseller_id(Context) =:= cb_context:auth_account_id(Context),
case IsAuthenticated
andalso (IsSuperDuperAdmin
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_media.erl
Expand Up @@ -134,7 +134,7 @@ authorize_media(_Context, [{<<"media">>, [?LANGUAGES, _Language]}], 'undefined')

authorize_media(Context, [{<<"media">>, _}|_], 'undefined') ->
IsAuthenticated = cb_context:is_authenticated(Context),
IsSuperDuperAdmin = cb_modules_util:is_superduper_admin(Context),
IsSuperDuperAdmin = cb_context:is_superduper_admin(Context),
IsReqVerbGet = cb_context:req_verb(Context) =:= ?HTTP_GET,
case IsAuthenticated
andalso (IsSuperDuperAdmin
Expand Down
28 changes: 0 additions & 28 deletions applications/crossbar/src/modules/cb_modules_util.erl
Expand Up @@ -12,7 +12,6 @@
,update_mwi/2
,get_devices_owned_by/2
,maybe_originate_quickcall/1
,is_superduper_admin/1

,attachment_name/2
,parse_media_type/1
Expand Down Expand Up @@ -427,33 +426,6 @@ get_cid_number(Context, Default) ->
CIDNumber -> kz_util:uri_decode(CIDNumber)
end.

%%--------------------------------------------------------------------
%% @private
%% @doc
%% Returns true if the request contains a system admin module.
%% @end
%%--------------------------------------------------------------------
-spec is_superduper_admin(api_binary() | cb_context:context()) -> boolean().
is_superduper_admin('undefined') -> 'false';
is_superduper_admin(<<_/binary>> = AccountId) ->
lager:debug("checking for superduper admin: ~s", [AccountId]),
case kz_account:fetch(AccountId) of
{'ok', JObj} ->
case kz_account:is_superduper_admin(JObj) of
'true' ->
lager:debug("the requestor is a superduper admin"),
'true';
'false' ->
lager:debug("the requestor is not a superduper admin"),
'false'
end;
{'error', _E} ->
lager:debug("not authorizing, error during lookup: ~p", [_E]),
'false'
end;
is_superduper_admin(Context) ->
is_superduper_admin(cb_context:auth_account_id(Context)).

%%--------------------------------------------------------------------
%% @private
%% @doc
Expand Down
14 changes: 7 additions & 7 deletions applications/crossbar/src/modules/cb_port_requests.erl
Expand Up @@ -419,11 +419,11 @@ maybe_patch_to_scheduled(Context, Id) ->
case kz_json:get_value(<<"scheduled_date">>, JObj) of
'undefined' ->
cb_context:add_validation_error(<<"error">>
,<<"type">>
,kz_json:from_list([{<<"message">>, <<"Schedule update missing parameters">>}
,{<<"missing">>, <<"schedule_date">>}
])
,Context);
,<<"type">>
,kz_json:from_list([{<<"message">>, <<"Schedule update missing parameters">>}
,{<<"missing">>, <<"schedule_date">>}
])
,Context);

_Scheduled ->
patch_then_notify(Context, Id, ?PORT_SCHEDULED)
Expand Down Expand Up @@ -831,7 +831,7 @@ private_comment_filter(Comment, Acc) ->

-spec filter_private_comments(cb_context:context(), kz_json:object()) -> kz_json:object().
filter_private_comments(Context, JObj) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'false' -> run_comment_filter(JObj);
'true' -> JObj
end.
Expand Down Expand Up @@ -989,7 +989,7 @@ can_update_port_request(_Context, ?PORT_UNCONFIRMED) ->
can_update_port_request(_Context, ?PORT_REJECTED) ->
'true';
can_update_port_request(Context, _) ->
cb_modules_util:is_superduper_admin(cb_context:auth_account_id(Context)).
cb_context:is_superduper_admin(cb_context:auth_account_id(Context)).

%%--------------------------------------------------------------------
%% @private
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_registrations.erl
Expand Up @@ -97,7 +97,7 @@ authorize(_, _) -> 'false'.

-spec authorize_admin(cb_context:context(), req_nouns()) -> boolean().
authorize_admin(Context, [{<<"registrations">>, [?COUNT_PATH_TOKEN]}]) ->
cb_modules_util:is_superduper_admin(Context).
cb_context:is_superduper_admin(Context).

%%--------------------------------------------------------------------
%% @public
Expand Down
Expand Up @@ -85,7 +85,7 @@ authorize(_Context, _Nouns) ->
'true' |
{'halt', cb_context:context()}.
maybe_authorize_admin(Context) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' ->
lager:debug("authz the request for global resources"),
'true';
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_resources.erl
Expand Up @@ -103,7 +103,7 @@ authorize(_Context, _Nouns) ->
'true' |
{'halt', cb_context:context()}.
maybe_authorize_admin(Context) ->
case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' ->
lager:debug("authz the request for global resources"),
'true';
Expand Down
4 changes: 2 additions & 2 deletions applications/crossbar/src/modules/cb_simple_authz.erl
Expand Up @@ -42,13 +42,13 @@ authorize(Context) ->
authorize(Context, cb_context:req_verb(Context), cb_context:req_nouns(Context)).

authorize(Context, Verb, [{?KZ_ACCOUNTS_DB, []}]) ->
cb_modules_util:is_superduper_admin(Context)
cb_context:is_superduper_admin(Context)
orelse Verb =:= ?HTTP_PUT;
authorize(_Context, ?HTTP_GET, [{<<"global_provisioner_templates">>,_}|_]) ->
'true';
authorize(Context, Verb, _Nouns) ->
AuthAccountId = cb_context:auth_account_id(Context),
IsSysAdmin = cb_modules_util:is_superduper_admin(AuthAccountId),
IsSysAdmin = cb_context:is_superduper_admin(AuthAccountId),
case (not should_ignore(Context)
andalso (allowed_if_sys_admin_mod(IsSysAdmin, Context)
andalso account_is_descendant(IsSysAdmin, Context)
Expand Down
6 changes: 3 additions & 3 deletions applications/crossbar/src/modules/cb_sup.erl
Expand Up @@ -140,13 +140,13 @@ authorize(_Context) ->
'false'.

authorize(Context, _Module) ->
cb_modules_util:is_superduper_admin(Context).
cb_context:is_superduper_admin(Context).

authorize(Context, _Module, _Function) ->
cb_modules_util:is_superduper_admin(Context).
cb_context:is_superduper_admin(Context).

authorize(Context, _Module, _Function, _Args) ->
cb_modules_util:is_superduper_admin(Context).
cb_context:is_superduper_admin(Context).

%%--------------------------------------------------------------------
%% @public
Expand Down
6 changes: 3 additions & 3 deletions applications/crossbar/src/modules/cb_system_configs.erl
Expand Up @@ -56,9 +56,9 @@ init() ->
-spec authorize(cb_context:context()) -> boolean().
-spec authorize(cb_context:context(), path_token()) -> boolean().
-spec authorize(cb_context:context(), path_token(), path_token()) -> boolean().
authorize(Context) -> cb_modules_util:is_superduper_admin(Context).
authorize(Context, _Id) -> cb_modules_util:is_superduper_admin(Context).
authorize(Context, _Id, _Node) -> cb_modules_util:is_superduper_admin(Context).
authorize(Context) -> cb_context:is_superduper_admin(Context).
authorize(Context, _Id) -> cb_context:is_superduper_admin(Context).
authorize(Context, _Id, _Node) -> cb_context:is_superduper_admin(Context).

%%--------------------------------------------------------------------
%% @public
Expand Down
4 changes: 2 additions & 2 deletions applications/crossbar/src/modules/cb_transactions.erl
Expand Up @@ -356,7 +356,7 @@ validate_credit(Context) ->
Amount = kz_json:get_float_value(<<"amount">>, cb_context:req_data(Context)),
{'ok', MasterAccountId} = kapps_util:get_master_account_id(),

case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' -> validate_credit(Context, Amount);
'false' ->
case kz_services:is_reseller(cb_context:auth_account_id(Context))
Expand Down Expand Up @@ -392,7 +392,7 @@ validate_credit(Context, _) ->
validate_debit(Context) ->
Amount = kz_json:get_float_value(<<"amount">>, cb_context:req_data(Context)),

case cb_modules_util:is_superduper_admin(Context) of
case cb_context:is_superduper_admin(Context) of
'true' -> validate_debit(Context, Amount);
'false' ->
case kz_services:is_reseller(cb_context:auth_account_id(Context)) of
Expand Down
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_whitelabel.erl
Expand Up @@ -133,7 +133,7 @@ authorize(Context) ->
-spec authorize(cb_context:context(), req_nouns(), http_method()) -> boolean().
authorize(Context, [{<<"whitelabel">>, [?DOMAINS_REQ]}], ?HTTP_POST) ->
%% /{VERSION}/whitelabel/domains retricted to sys-admin account
cb_modules_util:is_superduper_admin(Context);
cb_context:is_superduper_admin(Context);
authorize(_Context, [{<<"whitelabel">>, [_]}], ?HTTP_GET) ->
'true';
authorize(_Context, [{<<"whitelabel">>, [_ | [?LOGO_REQ]]}], ?HTTP_GET) ->
Expand Down
4 changes: 2 additions & 2 deletions applications/crossbar/src/modules_v2/cb_devices_v2.erl
Expand Up @@ -376,7 +376,7 @@ error_mdn_undefined(Context) ->
check_mdn_changed('undefined', Context) ->
check_mdn_taken('undefined', Context);
check_mdn_changed(DeviceId, Context) ->
IsSuperAdmin = cb_modules_util:is_superduper_admin(Context),
IsSuperAdmin = cb_context:is_superduper_admin(Context),
case has_mdn_changed(Context) of
'true' when IsSuperAdmin ->
Context1 = cb_context:store(Context, 'remove_mobile_mdn', 'true'),
Expand Down Expand Up @@ -578,7 +578,7 @@ check_device_type_change('undefined', Context) ->
check_device_schema('undefined', Context);
check_device_type_change(DeviceId, Context) ->
NewDeviceType = kz_device:device_type(cb_context:req_data(Context)),
IsSuperAdmin = cb_modules_util:is_superduper_admin(Context),
IsSuperAdmin = cb_context:is_superduper_admin(Context),
OldDeviceType = kz_device:device_type(cb_context:fetch(Context, 'db_doc')),
case {NewDeviceType, OldDeviceType} of
{Same, Same} -> check_device_schema(DeviceId, Context);
Expand Down