TT#88904 - Store admin id and jwt key in localStorage

* on administrator login, store said variables so
	   we can automatically log in to v2 without having
	   to redirect

Change-Id: I50d79996198561c54e555d264388d26610905ca6
mr9.1
Flaviu Mates 5 years ago
parent 01e11a710b
commit eb13492026

@ -49,6 +49,38 @@ sub login_index :Path Form {
if($res) {
# auth ok
if ($realm eq 'admin') {
use Crypt::JWT qw/encode_jwt/;
my $key = $c->config->{'Plugin::Authentication'}{api_admin_jwt}{credential}{jwt_key};
my $relative_exp = $c->config->{'Plugin::Authentication'}{api_admin_jwt}{credential}{relative_exp};
my $alg = $c->config->{'Plugin::Authentication'}{api_admin_jwt}{credential}{alg};
unless ($key) {
NGCP::Panel::Utils::Message::error(
c => $c,
desc => $c->loc('No JWT key has been configured.'),
);
}
my $raw_key = pack('H*', $key);
my $jwt_data = {
id => $c->user->id,
username => $c->user->login,
};
my $token = encode_jwt(
payload => $jwt_data,
key => $raw_key,
alg => $alg,
$relative_exp ? (relative_exp => $relative_exp) : (),
);
$c->session->{aui_adminId} = $c->user->id;
$c->session->{aui_jwt} = $token;
}
$c->session->{user_tz} = undef; # reset to reload from db
$c->session->{user_tz_name} = undef; # reset to reload from db
my $target = $c->session->{'target'} || '/';

@ -157,6 +157,13 @@ if (!window.console) {
}
Theme.init ();
[% IF c.session.aui_adminId && c.session.aui_jwt -%]
localStorage.setItem('aui_adminId', [% c.session.aui_adminId -%]);
localStorage.setItem('aui_jwt', '[% c.session.aui_jwt -%]');
[% c.session.delete('aui_adminId', 'aui_jwt') %]
[% END -%]
var mainWrapperInit = function () {
$('[rel="tooltip"]').tooltip({'html': false});

Loading…
Cancel
Save