Initial attempt at adding LDAP login support
[?]
Oct 13, 2019, 12:06 AM
72OTJYGTKL5ISUSCBOYLZLD3BOSKDO5EE2G5BTSZSNV5ZKMYQGIQCDependencies
- [2]
3QWDDLBRAdd support for logging in via a Google account - [3]
NILMMFMYRespect X-Request-Base header coming from a frontend proxy. - [4]
LZVO64YGMerge in the first bits of the API work - [5]
XJRJ4J7MAdd user registration - [6]
WDKFN4B2Make sign in a modal dialog box rather than a separate page - [7]
J5UVLXOK* Start of a basic Catalyst web interface. - [8]
4AKMU4ZBClean up user editing - [9]
7ZP7ZMMUMake /login give a proper JSON response again - [10]
U2ZK6LZ7Fix some warnings - [*]
XUKHBDR5Prevent Persona users from setting a password - [*]
36ZTCZ4FAdd basic Persona support - [*]
HOI5XQHS* Don't use a config file by default. This frees up $HYDRA_CONFIG so
Change contents
- edit in src/lib/Hydra/Controller/User.pm at line 15
use Encode qw(decode); - replacement in src/lib/Hydra/Controller/User.pm at line 32
accessDenied($c, "Bad username or password.")if !$c->authenticate({username => $username, password => $password});if ($c->authenticate({username => $username, password => $password}, 'ldap')) {doLDAPLogin($self, $c, $username);} elsif ($c->authenticate({username => $username, password => $password})) {}else {accessDenied($c, "Bad username or password.")} - edit in src/lib/Hydra/Controller/User.pm at line 51
sub doLDAPLogin {my ($self, $c, $username) = @_; - edit in src/lib/Hydra/Controller/User.pm at line 55
my $user = $c->find_user({ username => $username });my $LDAPUser = $c->find_user({ username => $username }, 'ldap');my @LDAPRoles = grep { (substr $_, 0, 5) eq "hydra" } $LDAPUser->roles; - edit in src/lib/Hydra/Controller/User.pm at line 59
if (!$user) {$c->model('DB::Users')->create({ username => $username, fullname => decode('UTF-8', $LDAPUser->cn), password => "!", emailaddress => $LDAPUser->mail, type => "LDAP"});$user = $c->find_user({ username => $username }) or die;} else {$user->update({ fullname => decode('UTF-8', $LDAPUser->cn), password => "!", emailaddress => $LDAPUser->mail, type => "LDAP"});}$user->userroles->delete;if (@LDAPRoles) {$user->userroles->create({ role => (substr $_, 6) }) for @LDAPRoles;}$c->set_authenticated($user);} - replacement in src/lib/Hydra.pm at line 23
use YAML qw(LoadFile);use Path::Class 'file'; - edit in src/lib/Hydra.pm at line 48[14.590][14.590]
ldap => LoadFile(file($ENV{'HYDRA_LDAP_CONFIG'}))