[#77] Log user access
This commit is contained in:
@@ -6,7 +6,8 @@
|
|||||||
|
|
||||||
[ENHANCEMENTS]
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
* [#69] Add search by layers to device search
|
* [#69] Add search by layers to device search
|
||||||
|
* [#77] Log user access
|
||||||
|
|
||||||
|
|
||||||
2.022000 - 2014-01-26
|
2.022000 - 2014-01-26
|
||||||
|
|||||||
@@ -94,6 +94,57 @@ get qr{^/(?:login(?:/denied)?)?} => sub {
|
|||||||
template 'index';
|
template 'index';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Override default login_handler so that we can log access in the
|
||||||
|
# database
|
||||||
|
post '/login' => sub {
|
||||||
|
my ($success, $realm) = authenticate_user(
|
||||||
|
params->{username}, params->{password}
|
||||||
|
);
|
||||||
|
if ($success) {
|
||||||
|
session logged_in_user => params->{username};
|
||||||
|
session logged_in_user_realm => $realm;
|
||||||
|
|
||||||
|
schema('netdisco')->resultset('UserLog')->create({
|
||||||
|
username => session('logged_in_user'),
|
||||||
|
userip => request->remote_address,
|
||||||
|
event => "Login",
|
||||||
|
details => params->{return_url},
|
||||||
|
});
|
||||||
|
|
||||||
|
redirect params->{return_url} || uri_for('/');
|
||||||
|
} else {
|
||||||
|
|
||||||
|
schema('netdisco')->resultset('UserLog')->create({
|
||||||
|
username => params->{username},
|
||||||
|
userip => request->remote_address,
|
||||||
|
event => "Login Failure",
|
||||||
|
details => params->{return_url},
|
||||||
|
});
|
||||||
|
|
||||||
|
vars->{login_failed}++;
|
||||||
|
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
# Since we override the default login_handler, logout has to be handled as
|
||||||
|
# well
|
||||||
|
any ['get','post'] => '/logout' => sub {
|
||||||
|
|
||||||
|
schema('netdisco')->resultset('UserLog')->create({
|
||||||
|
username => session('logged_in_user'),
|
||||||
|
userip => request->remote_address,
|
||||||
|
event => "Logout",
|
||||||
|
details => '',
|
||||||
|
});
|
||||||
|
|
||||||
|
session->destroy;
|
||||||
|
if (params->{return_url}) {
|
||||||
|
redirect params->{return_url};
|
||||||
|
} else {
|
||||||
|
return "OK, logged out successfully.";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
any qr{.*} => sub {
|
any qr{.*} => sub {
|
||||||
var('notfound' => true);
|
var('notfound' => true);
|
||||||
status 'not_found';
|
status 'not_found';
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ plugins:
|
|||||||
Auth::Extensible:
|
Auth::Extensible:
|
||||||
no_api_change_warning: true
|
no_api_change_warning: true
|
||||||
no_default_pages: true
|
no_default_pages: true
|
||||||
|
no_login_handler: true
|
||||||
realms:
|
realms:
|
||||||
users:
|
users:
|
||||||
provider: 'App::Netdisco::Web::Auth::Provider::DBIC'
|
provider: 'App::Netdisco::Web::Auth::Provider::DBIC'
|
||||||
|
|||||||
Reference in New Issue
Block a user