[#56] Support API call to /login
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
* [#74] Device Name / DNS mismatches report
|
* [#74] Device Name / DNS mismatches report
|
||||||
* [#71] Node search by date (but not time)
|
* [#71] Node search by date (but not time)
|
||||||
* [#73] NetBIOS Poller - nbtstat and nbtwalk
|
* [#73] NetBIOS Poller - nbtstat and nbtwalk
|
||||||
|
* [#56] Support API call to /login
|
||||||
|
|
||||||
[ENHANCEMENTS]
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ get qr{^/(?:login(?:/denied)?)?} => sub {
|
|||||||
|
|
||||||
# override default login_handler so we can log access in the database
|
# override default login_handler so we can log access in the database
|
||||||
post '/login' => sub {
|
post '/login' => sub {
|
||||||
|
my $mode = (request->is_ajax ? 'API' : 'Web');
|
||||||
my ($success, $realm) = authenticate_user(
|
my ($success, $realm) = authenticate_user(
|
||||||
params->{username}, params->{password}
|
params->{username}, params->{password}
|
||||||
);
|
);
|
||||||
@@ -44,23 +45,31 @@ post '/login' => sub {
|
|||||||
schema('netdisco')->resultset('UserLog')->create({
|
schema('netdisco')->resultset('UserLog')->create({
|
||||||
username => session('logged_in_user'),
|
username => session('logged_in_user'),
|
||||||
userip => request->remote_address,
|
userip => request->remote_address,
|
||||||
event => "Login",
|
event => "Login ($mode)",
|
||||||
details => params->{return_url},
|
details => params->{return_url},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return if request->is_ajax;
|
||||||
redirect params->{return_url} || uri_for('/');
|
redirect params->{return_url} || uri_for('/');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
session->destroy;
|
||||||
|
|
||||||
schema('netdisco')->resultset('UserLog')->create({
|
schema('netdisco')->resultset('UserLog')->create({
|
||||||
username => params->{username},
|
username => params->{username},
|
||||||
userip => request->remote_address,
|
userip => request->remote_address,
|
||||||
event => "Login Failure",
|
event => "Login Failure ($mode)",
|
||||||
details => params->{return_url},
|
details => params->{return_url},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (request->is_ajax) {
|
||||||
|
status('unauthorized');
|
||||||
|
}
|
||||||
|
else {
|
||||||
vars->{login_failed}++;
|
vars->{login_failed}++;
|
||||||
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
|
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
# we override the default login_handler, so logout has to be handled as well
|
# we override the default login_handler, so logout has to be handled as well
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ safe_password_store: true
|
|||||||
# ```````````````````````````````````````````````````````
|
# ```````````````````````````````````````````````````````
|
||||||
#domain_suffix: '.example.com'
|
#domain_suffix: '.example.com'
|
||||||
|
|
||||||
# uncomment and set to true to globally disable authentication/login,
|
# uncomment and set to true to globally disable authentication/loginr.
|
||||||
# and also create a user called "guest".
|
# create a user called "guest" if you want to assign port/admin rights.
|
||||||
# ```````````````````````````````````````````````````````````````````
|
# `````````````````````````````````````````````````````````````````````
|
||||||
#no_auth: false
|
#no_auth: false
|
||||||
|
|
||||||
# SNMP community string(s)
|
# SNMP community string(s)
|
||||||
|
|||||||
Reference in New Issue
Block a user