Remove debrecated API methods
Change-Id: I896c75bb93cfa3a5ad6d1c7304e6edf1dde5cfec
diff --git a/Changes b/Changes
index fb378c4..88cc9e3 100755
--- a/Changes
+++ b/Changes
@@ -25,6 +25,7 @@
- Fix strict-mode in tour.
- Define resources in Makefile.
- Support Mojolicious >= 9.
+ - Remove deprecated helper methods.
0.40 2020-12-17
- Modernize ES and fix in-loops.
diff --git a/lib/Kalamar/Plugin/KalamarUser.pm b/lib/Kalamar/Plugin/KalamarUser.pm
index fbda902..04a90b2 100644
--- a/lib/Kalamar/Plugin/KalamarUser.pm
+++ b/lib/Kalamar/Plugin/KalamarUser.pm
@@ -7,9 +7,6 @@
has 'api';
has 'ua';
-# TODO:
-# Replace plugin-api with korap->api!
-
sub register {
my ($plugin, $mojo, $param) = @_;
@@ -93,381 +90,8 @@
return $ua->start_p($tx);
}
);
-
- #############################################
- # WARNING! #
- # The following helpers are all deprecated: #
- #############################################
-
- $mojo->helper(
- 'user.handle' => sub {
-
- # 2018-11-16
- deprecated 'user.handle is deprecated in favour of user_handle!';
- return shift->user_handle;
- });
-
- # Get the user token necessary for authorization
- $mojo->helper(
- 'user_auth' => sub {
- my $c = shift;
-
- # 2018-11-16
- deprecated 'user_auth is deprecated in favour of auth->token!';
-
- # Get token from stash
- my $token = $c->stash('auth');
-
- return $token if $token;
-
- # Get auth from session
- my $auth = $c->session('auth') or return;
-
- # Set token to stash
- $c->stash(auth => $auth);
-
- return $auth;
- }
- );
-
- $mojo->helper(
- 'user.ua' => sub {
-
- # 2018-11-15
- deprecated 'user->ua is deprecated!';
-
- my $c = shift;
-
- my $auth = $c->user_auth;
-
- return $plugin->ua unless $auth;
-
- my $ua = Mojo::UserAgent->new(
- connect_timeout => 15,
- inactivity_timeout => 120,
- max_redirects => 3
- );
-
- # Set app to server
- $ua->server->app($c->app);
-
- # Initiate client information
- my $client = $c->client_ip;
-
- $ua->on(
- start => sub {
- my ($ua, $tx) = @_;
- my $headers = $tx->req->headers;
- $headers->header('Authorization' => $auth);
- $headers->header('X-Forwarded-For' => $client) if $client;
- }
- );
- return $ua;
- }
- );
-
-
- # Request with authorization header
- $mojo->helper(
- 'user.auth_request' => sub {
- my $c = shift;
-
- # 2018-11-15
- deprecated 'user->auth_request is deprecated!';
-
- my $method = shift;
- my $path = shift;
-
- # Check for callback
- my $cb;
- if ($_[-1] && ref $_[-1] eq 'CODE') {
- $cb = pop;
- };
-
- my $ua = $plugin->ua;
-
- my $tx;
- if ($c->user_auth) {
- $tx = $plugin->build_authorized_tx(
- $c->user_auth, $c->client_ip, uc($method), $path, @_
- );
- }
- else {
- $tx = $ua->build_tx(
- uc($method), $path, @_
- );
- };
- return $ua->start($tx, $cb) if $cb;
- return $ua->start($tx);
- }
- );
-
- # Request with authorization header
- # return a promise
- $mojo->helper(
- 'user.auth_request_p' => sub {
- my $c = shift;
- my $method = shift;
- my $path = shift;
-
- # 2018-11-16
- deprecated 'user->auth_request_p is deprecated!';
-
- # Get plugin user agent
- my $ua = $plugin->ua;
-
- my $tx;
- if ($c->user_auth) {
-
- $tx = $plugin->build_authorized_tx(
- $c->user_auth, $c->client_ip, uc($method), $path, @_
- );
- }
- else {
- $tx = $ua->build_tx(
- uc($method), $path, @_
- );
- };
-
- # Create a promise object
- return $ua->start_p($tx);
- }
- );
-
-
- # Login
- $mojo->helper(
- 'user.login' => sub {
- my $c = shift;
- my ($user, $pwd) = @_;
-
- # 2018-11-16
- deprecated 'user->login is deprecated!';
-
- return if (index($user, ':') >= 0);
-
- $c->app->log->debug("Login from user $user:$pwd");
-
- my $url = Mojo::URL->new($plugin->api)->path('auth/apiToken');
-
- # Find client ip
- my $client = $c->client_ip;
- my %add;
- %add = ('X-Forwarded-For' => $client) if $client;
-
- my $tx = $plugin->ua->get($url => {
- Authorization => 'Basic ' . b($user . ':' . $pwd)->b64_encode->trim,
- %add
- });
-
- # Login successful
- my $res = $tx->result;
- unless ($res->error) {
-
- # Get the java token
- my $jwt = $res->json;
-
- # No java web token
- unless ($jwt) {
- $c->notify(error => 'Response is no valid JWT (remote)');
- return;
- };
-
- # There is an error here
- # Dealing with errors here
- if (my $error = $jwt->{error}) {
- if (ref $error eq 'ARRAY') {
- $c->notify(error => $c->dumper($_));
- }
- else {
- $c->notify(error => 'There is an unknown JWT error');
- };
- return;
- };
-
- # TODO: Deal with user return values.
- my $auth = $jwt->{token_type} . ' ' . $jwt->{token};
-
- $mojo->log->debug(qq!Login successful: "$user" with "$auth"!);
-
- $user = $jwt->{username} ? $jwt->{username} : $user;
-
- # Set session info
- $c->session(user => $user);
- $c->session(auth => $auth);
-
- # Set stash info
- $c->stash(user => $user);
- $c->stash(auth => $auth);
-
- # Set cache
- $c->chi('user')->set($auth => $user);
- return 1;
- }
-
- elsif (my $e = $tx->error) {
-
- # Notify the user
- $c->notify(
- error =>
- ($e->{code} ? $e->{code} . ': ' : '') .
- $e->{message} . ' for Login (remote)'
- );
-
- # Log failure
- $c->app->log->debug(
- ($e->{code} ? $e->{code} . ' - ' : '') .
- $e->{message}
- );
- };
-
- $mojo->log->debug(qq!Login fail: "$user"!);
-
- return;
- }
- );
-
- # Get details, settings etc. with authorization
- $mojo->helper(
- 'user.get' => sub {
- my $c = shift;
- my $param = shift;
-
- # 'info' is useless!
- return unless $param =~ m/^details|settings$/;
-
- # The user may be logged in
- my $auth = ($c->stash('auth') || $c->session('auth')) or return;
-
- # Get namespaced cache
- my $chi = $c->chi('user');
-
- # Get user and check, if the user is real
- my $user = $chi->get($auth);
-
- # Check if the user is really logged in
- my $value = $chi->get($user . '_' . $param);
-
- unless ($value) {
-
- my $tx = $plugin->build_authorized_tx(
- $auth,
- $c->client_ip,
- 'GET',
- Mojo::URL->new($plugin->api)->path('user/' . $param)
- );
- $tx = $plugin->ua->start($tx);
-
- return if $tx->error;
-
- $value = $tx->result;
- # else {
- # warn $c->dumper($value->json);
- # };
- if ($value) {
- $value = $value->json;
- };
-
- $chi->set($user . '_' . $param => $value);
- };
-
- # Return value
- return $value;
- }
- );
-
- $mojo->helper(
- 'user.set' => sub {
- my $c = shift;
- my $param = shift;
-
- # 'info' is useless!
- return unless $param =~ m/^details|settings$/;
-
- my $json_obj = shift;
-
- # The user may be logged in
- my $auth = ($c->stash('auth') || $c->session('auth')) or return;
-
- # Get namespaced cache
- my $chi = $c->chi('user');
-
- # Get user and check, if the user is real
- my $user = $chi->get($auth);
-
- # Build a JSON transaction object
- my $tx = $plugin->build_authorized_tx(
- $auth, $c->client_ip, 'POST', 'user/' . $param, json => $json_obj
- );
-
- # Start
- $tx = $plugin->ua->start($tx);
-
- return if $tx->error;
- my $res = $tx->result;
-
- # Kill all caches!!
- $chi->remove($user . '_' . $param);
-
- # Return value
- return $res->json;
- }
- );
-
- # Logout
- $mojo->helper(
- 'user.logout' => sub {
- my $c = shift;
-
- # 2018-11-16
- deprecated 'user->logout is deprecated!';
-
- # TODO: csrf-protection!
-
- my $url = Mojo::URL->new($plugin->api)->path('auth/logout');
-
- my $tx = $c->user->auth_request(
- 'get', $url
- );
-
- unless ($tx->error) {
- # Clear cache
- $c->chi('user')->remove($c->user_auth);
-
- # Expire session
- $c->session(user => undef);
- $c->session(auth => undef);
- return 1;
- };
- return 0;
- }
- );
};
-
-sub build_authorized_tx {
- my $plugin = shift;
-
- my $ua = $plugin->ua;
- my ($auth, $client_ip, $method, $path, @values) = @_;
-
- my $header;
- if (@values && ref $values[0] eq 'HASH') {
- $header = shift @values;
- }
- else {
- $header = {};
- };
-
- my $url = Mojo::URL->new($path);
-
- $header->{Authorization} = $auth;
- $header->{'X-Forwarded-For'} = $client_ip;
-
- return $ua->build_tx($method, $url => $header => @values);
-};
-
-
1;