[Jifty-commit] r2169 - in jifty/trunk/plugins: AuthLDAPLogin
AuthLDAPLogin/doc AuthLDAPLogin/lib AuthLDAPLogin/lib/Jifty
AuthLDAPLogin/lib/Jifty/Plugin
AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin
AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action
AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Model
AuthLDAPLogin/share AuthLDAPLogin/share/po
AuthLDAPLogin/share/web AuthLDAPLogin/share/web/static
AuthLDAPLogin/share/web/templates AuthLDAPLogin/t
AuthLDAPOnly AuthLDAPOnly/doc AuthLDAPOnly/lib
AuthLDAPOnly/lib/Jifty AuthLDAPOnly/lib/Jifty/Plugin
AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly
AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action
AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Model
AuthLDAPOnly/share AuthLDAPOnly/share/po
AuthLDAPOnly/share/web AuthLDAPOnly/share/web/static AuthLDAPOnly/t
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Thu Nov 16 12:26:17 EST 2006
Author: yves
Date: Thu Nov 16 12:26:16 2006
New Revision: 2169
Added:
jifty/trunk/plugins/AuthLDAPLogin/
jifty/trunk/plugins/AuthLDAPLogin/MANIFEST
jifty/trunk/plugins/AuthLDAPLogin/Makefile.PL
jifty/trunk/plugins/AuthLDAPLogin/doc/
jifty/trunk/plugins/AuthLDAPLogin/lib/
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin.pm
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogin.pm
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogout.pm
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Dispatcher.pm
jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Model/
jifty/trunk/plugins/AuthLDAPLogin/share/
jifty/trunk/plugins/AuthLDAPLogin/share/po/
jifty/trunk/plugins/AuthLDAPLogin/share/web/
jifty/trunk/plugins/AuthLDAPLogin/share/web/static/
jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/
jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogin
jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogout
jifty/trunk/plugins/AuthLDAPLogin/t/
jifty/trunk/plugins/AuthLDAPOnly/
jifty/trunk/plugins/AuthLDAPOnly/MANIFEST
jifty/trunk/plugins/AuthLDAPOnly/Makefile.PL
jifty/trunk/plugins/AuthLDAPOnly/doc/
jifty/trunk/plugins/AuthLDAPOnly/lib/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly.pm
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogin.pm
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogout.pm
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/CurrentUser.pm
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Dispatcher.pm
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Model/
jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Model/LDAPUser.pm
jifty/trunk/plugins/AuthLDAPOnly/share/
jifty/trunk/plugins/AuthLDAPOnly/share/po/
jifty/trunk/plugins/AuthLDAPOnly/share/web/
jifty/trunk/plugins/AuthLDAPOnly/share/web/static/
jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/
jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogin
jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogout
jifty/trunk/plugins/AuthLDAPOnly/t/
Log:
First release for plugins AuthLDAPOnly and AuthLDAPLogin, all comments are welcome
Added: jifty/trunk/plugins/AuthLDAPLogin/MANIFEST
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/MANIFEST Thu Nov 16 12:26:16 2006
@@ -0,0 +1,18 @@
+inc/Module/Install.pm
+inc/Module/Install/Base.pm
+inc/Module/Install/Can.pm
+inc/Module/Install/Fetch.pm
+inc/Module/Install/Makefile.pm
+inc/Module/Install/Metadata.pm
+inc/Module/Install/Share.pm
+inc/Module/Install/Win32.pm
+inc/Module/Install/WriteAll.pm
+lib/Jifty/Plugin/AuthLDAPLogin.pm
+lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogin.pm
+lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogout.pm
+lib/Jifty/Plugin/AuthLDAPLogin/Dispatcher.pm
+Makefile.PL
+MANIFEST
+META.yml
+share/web/templates/ldaplogin
+share/web/templates/ldaplogout
Added: jifty/trunk/plugins/AuthLDAPLogin/Makefile.PL
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/Makefile.PL Thu Nov 16 12:26:16 2006
@@ -0,0 +1,10 @@
+use inc::Module::Install;
+name('Jifty-Plugin-AuthLDAPLogin');
+license('Perl');
+version('0.01');
+requires('Jifty' => '0.60912');
+requires('Net::LDAP');
+
+install_share;
+
+WriteAll;
Added: jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,82 @@
+use strict;
+use warnings;
+
+=head1 NAME
+
+ Jifty::Plugin::AuthLDAPLogin
+
+=head1 DESCRIPTION
+
+ MUST BE USED WITH LOGIN PLUGIN
+
+=head1 CONFIG
+
+ in etc/config.yml
+
+ Plugins:
+ - Login: {}
+ - AuthLDAPLogin:
+ LDAPserver: ldap.univ.fr
+ LDAPbase: ou=people,dc=.....
+ LDAPuid: uid
+ LDAPemail: mailLocalAddress
+
+
+=cut
+
+package Jifty::Plugin::AuthLDAPLogin;
+use base qw/Jifty::Plugin/;
+use Net::LDAP;
+
+# Your plugin goes here. If takes any configuration or arguments, you
+# probably want to override L<Jifty::Plugin/init>.
+
+{
+ my ($CurrentLDAPUserClass, $AuthLDAPUserClass, $LDAP, %params);
+
+ sub init {
+ my $self = shift;
+ my %args = @_;
+ my $appname = Jifty->config->framework('ApplicationName');
+ $CurrentLDAPUserClass = $args{CurrentUserClass}
+ || "${appname}::CurrentUser";
+ $AuthLDAPUserClass = $args{AuthLDAPUserClass}
+ || "${appname}::Model::LDAPUser";
+
+ my ($conf);
+ foreach (@{Jifty->config->framework('Plugins')}) {
+ $conf = $_ if (defined $_->{'AuthLDAPLogin'});
+ }
+ $params{'Hostname'} = $conf->{'AuthLDAPLogin'}->{'LDAPserver'};
+ $params{'base'} = $conf->{'AuthLDAPLogin'}->{'LDAPbase'};
+ $params{'uid'} = $conf->{'AuthLDAPLogin'}->{'LDAPuid'};
+ $params{'email'} = $conf->{'AuthLDAPLogin'}->{'LDAPemail'};
+ $LDAP = Net::LDAP->new($params{Hostname},async=>1,onerror => 'undef',timeout => 3600, debug => 0);
+ }
+
+ sub CurrentLDAPUserClass {
+ return $CurrentLDAPUserClass;
+ }
+
+ sub AuthLDAPUserClass {
+ return $AuthLDAPUserClass;
+ }
+
+ sub LDAP {
+ return $LDAP;
+ }
+
+ sub base {
+ return $params{'base'};
+ }
+
+ sub uid {
+ return $params{'uid'};
+ }
+
+ sub email {
+ return $params{'email'};
+ }
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogin.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogin.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,108 @@
+use warnings;
+use strict;
+
+=head1 NAME
+
+Jifty::Plugin::AuthLDAPLogin::Action::LDAPLogin
+
+=cut
+
+package Jifty::Plugin::AuthLDAPLogin::Action::LDAPLogin;
+use base qw/Jifty::Action Jifty::Plugin::Login Jifty::Plugin::AuthLDAPLogin/;
+
+
+=head2 arguments
+
+Return the ticket form field
+
+=cut
+
+sub arguments {
+ return (
+ {
+ name => {
+ label => _('Login'),
+ mandatory => 1,
+ ajax_validates => 1,
+ },
+
+ password => {
+ type => 'password',
+ label => _('Password'),
+ mandatory => 1
+ },
+
+ }
+ );
+
+}
+
+=head2 validate_ticket ST
+
+for ajax_validates
+Makes sure that the ticket submitted is legal.
+
+
+=cut
+
+sub validate_name {
+ my $self = shift;
+ my $name = shift;
+
+ unless ( $name =~ /^[A-Za-z0-9-]+$/ ) {
+ return $self->validation_error(
+ name => _("That doesn't look like a valid login.") );
+ }
+
+
+ return $self->validation_ok('name');
+}
+
+
+=head2 take_action
+
+Actually check the user's password. If it's right, log them in.
+Otherwise, throw an error.
+
+
+=cut
+
+sub take_action {
+ my $self = shift;
+ my $username = $self->argument_value('name');
+ my $dn = $self->uid().'='.$username.','.
+ $self->base();
+
+ my $msg = $self->LDAP()->bind($dn ,'password' =>$self->argument_value('password'));
+
+ unless (not $msg->code) {
+ $self->result->error(
+ _('You may have mistyped your login or password. Give it another shot?')
+ );
+ return;
+ }
+
+# if ($error) {
+# Jifty->log->info("CAS error: $ticket $username : $error");
+# return;
+# }
+
+ my $LDAPUser = $self->LoginUserClass();
+ my $CurrentUser = $self->CurrentUserClass();
+ my $u = $LDAPUser->new( current_user => $CurrentUser->superuser );
+
+ $u->load_by_cols( email => $username.'@LDAP.user');
+ my $id = $u->id;
+ if (!$id) {
+ ($id) = $u->create(name => $username, email => $username.'@LDAP.user');
+ }
+
+ Jifty->log->debug("Login user id: $id");
+
+ # Actually do the signin thing.
+ Jifty->web->current_user( $CurrentUser->new( id => $u->id ) );
+
+ return 1;
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogout.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Action/LDAPLogout.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,35 @@
+use warnings;
+use strict;
+
+=head1 NAME
+
+Jifty::Plugin::AuthLDAPLogin::Action::LDAPLogout
+
+=cut
+
+package Jifty::Plugin::AuthLDAPLogin::Action::LDAPLogout;
+use base qw/Jifty::Action/;
+
+=head2 arguments
+
+Return the email and password form fields
+
+=cut
+
+sub arguments {
+ return ( {} );
+}
+
+=head2 take_action
+
+Nuke the current user object
+
+=cut
+
+sub take_action {
+ my $self = shift;
+ Jifty->web->current_user(undef);
+ return 1;
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Dispatcher.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/lib/Jifty/Plugin/AuthLDAPLogin/Dispatcher.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::AuthLDAPLogin::Dispatcher;
+use Jifty::Dispatcher -base;
+
+# Put any plugin-specific dispatcher rules here.
+
+# Log out
+before 'ldaplogout' => run {
+ Jifty->web->request->add_action(
+ class => 'LDAPLogout',
+ moniker => 'ldaplogout',
+ );
+};
+
+
+# Login
+on 'ldaplogin' => run {
+ set 'action' =>
+ Jifty->web->new_action(
+ class => 'LDAPLogin',
+ moniker => 'ldaploginbox'
+ );
+ set 'next' => Jifty->web->request->continuation
+ || Jifty::Continuation->new(
+ request => Jifty::Request->new( path => "/" ) );
+};
+
+
+1;
Added: jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogin
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogin Thu Nov 16 12:26:16 2006
@@ -0,0 +1,19 @@
+<%args>
+$action => undef
+$next => undef
+</%args>
+<&|/_elements/wrapper, title => 'Login' &>
+
+% if (not Jifty->web->current_user->id) {
+<h2><% _('Login') %></h2>
+<% Jifty->web->form->start(call => $next, name => "ldaploginbox") %>
+<% $action->form_field('name') %>
+<% $action->form_field('password') %>
+%#<% $action->form_field('remember') %>
+<% Jifty->web->form->submit(label => _('Login'), submit => $action) %>
+<% Jifty->web->form->end %>
+% }
+% else {
+<% _("You're already logged in.") %>
+% }
+</&>
Added: jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogout
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPLogin/share/web/templates/ldaplogout Thu Nov 16 12:26:16 2006
@@ -0,0 +1,3 @@
+<&| /_elements/wrapper, title => "Logged out" &>
+<p><% _("Ok, you're now logged out. Have a good day.") %></p>
+</&>
Added: jifty/trunk/plugins/AuthLDAPOnly/MANIFEST
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/MANIFEST Thu Nov 16 12:26:16 2006
@@ -0,0 +1,10 @@
+MANIFEST
+lib/Jifty/Plugin/AuthLDAPOnly.pm
+lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogin.pm
+lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogout.pm
+lib/Jifty/Plugin/AuthLDAPOnly/CurrentUser.pm
+lib/Jifty/Plugin/AuthLDAPOnly/Dispatcher.pm
+lib/Jifty/Plugin/AuthLDAPOnly/Model/LDAPUser.pm
+Makefile.PL
+share/web/templates/ldaplogin
+share/web/templates/ldaplogout
Added: jifty/trunk/plugins/AuthLDAPOnly/Makefile.PL
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/Makefile.PL Thu Nov 16 12:26:16 2006
@@ -0,0 +1,10 @@
+use inc::Module::Install;
+name('Jifty-Plugin-AuthLDAPOnly');
+license('Perl');
+version('0.01');
+requires('Jifty' => '0.60912');
+requires('Net::LDAP');
+
+install_share;
+
+WriteAll;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,81 @@
+use strict;
+use warnings;
+
+=head1 NAME
+
+ Jifty::Plugin::AuthLDAPOnly
+
+=head1 DESCRIPTION
+
+ MUST NOT BE USED WITH LOGIN PLUGIN
+
+=head1 CONFIG
+
+ in etc/config.yml
+ Plugins:
+ - AuthLDAPOnly:
+ LDAPserver: ldap1.univ-metz.fr
+ LDAPbase: ou=people, ou=...
+ LDAPuid: uid
+ LDAPemail: mailLocalAddress
+
+
+=cut
+
+package Jifty::Plugin::AuthLDAPOnly;
+use base qw/Jifty::Plugin/;
+use Net::LDAP;
+
+# Your plugin goes here. If takes any configuration or arguments, you
+# probably want to override L<Jifty::Plugin/init>.
+
+{
+ my ($CurrentLDAPUserClass, $AuthLDAPUserClass, $LDAP, %params);
+
+ sub init {
+ my $self = shift;
+ my %args = @_;
+ my $appname = Jifty->config->framework('ApplicationName');
+ $CurrentLDAPUserClass = $args{CurrentUserClass}
+ || "${appname}::CurrentUser";
+ $AuthLDAPUserClass = $args{AuthLDAPUserClass}
+ || "${appname}::Model::LDAPUser";
+
+ my ($conf);
+ foreach (@{Jifty->config->framework('Plugins')}) {
+ $conf = $_ if (defined $_->{'AuthLDAPOnly'});
+ }
+ $params{'Hostname'} = $conf->{'AuthLDAPOnly'}->{'LDAPserver'};
+ $params{'base'} = $conf->{'AuthLDAPOnly'}->{'LDAPbase'};
+ $params{'uid'} = $conf->{'AuthLDAPOnly'}->{'LDAPuid'};
+ $params{'email'} = $conf->{'AuthLDAPOnly'}->{'LDAPemail'};
+ $LDAP = Net::LDAP->new($params{Hostname},async=>1,onerror => 'undef',timeout => 3600, debug => 0);
+ #my $msg = $LDAP->bind($params{DN},password => $params{Passwd});
+ }
+
+ sub CurrentLDAPUserClass {
+ return $CurrentLDAPUserClass;
+ }
+
+ sub AuthLDAPUserClass {
+ return $AuthLDAPUserClass;
+ }
+
+ sub LDAP {
+ return $LDAP;
+ }
+
+ sub base {
+ return $params{'base'};
+ }
+
+ sub uid {
+ return $params{'uid'};
+ }
+
+ sub email {
+ return $params{'email'};
+ }
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogin.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogin.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,107 @@
+use warnings;
+use strict;
+
+=head1 NAME
+
+Jifty::Plugin::AuthLDAPOnly::Action::LDAPLogin
+
+=cut
+
+package Jifty::Plugin::AuthLDAPOnly::Action::LDAPLogin;
+use base qw/Jifty::Action Jifty::Plugin::AuthLDAPOnly/;
+#use AuthCAS;
+
+
+=head2 arguments
+
+Return the ticket form field
+
+=cut
+
+sub arguments {
+ return (
+ {
+ name => {
+ label => _('Login'),
+ mandatory => 1,
+ ajax_validates => 1,
+ },
+
+ password => {
+ type => 'password',
+ label => _('Password'),
+ mandatory => 1
+ },
+
+ }
+ );
+
+}
+
+=head2 validate_ticket ST
+
+for ajax_validates
+Makes sure that the ticket submitted is legal.
+
+
+=cut
+
+sub validate_name {
+ my $self = shift;
+ my $name = shift;
+
+ unless ( $name =~ /^[A-Za-z0-9-]+$/ ) {
+ return $self->validation_error(
+ name => _("That doesn't look like a valid login.") );
+ }
+
+
+ return $self->validation_ok('name');
+}
+
+
+=head2 take_action
+
+Actually check the user's password. If it's right, log them in.
+Otherwise, throw an error.
+
+
+=cut
+
+sub take_action {
+ my $self = shift;
+ my $dn = $self->uid().'='.$self->argument_value('name').','.
+ $self->base();
+
+ my $msg = $self->LDAP()->bind($dn ,'password' =>$self->argument_value('password'));
+
+ unless (not $msg->code) {
+ $self->result->error(
+ _('You may have mistyped your login or password. Give it another shot?')
+ );
+ return;
+ }
+
+# if ($error) {
+# Jifty->log->info("CAS error: $ticket $username : $error");
+# return;
+# }
+
+ my $LDAPUser = $self->AuthLDAPUserClass();
+ my $CurrentUser = $self->CurrentLDAPUserClass();
+ my $u = $LDAPUser->new( current_user => $CurrentUser->superuser );
+
+ $u->load_by_cols( name => $self->argument_value('name'));
+ my $id = $u->id;
+ if (!$id) {
+ ($id) = $u->create(name => $self->argument_value('name'), created_on => DateTime->now);
+ }
+ Jifty->log->debug("Login user id: $id");
+
+ # Actually do the signin thing.
+ Jifty->web->current_user( $CurrentUser->new( id => $u->id ) );
+
+ return 1;
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogout.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Action/LDAPLogout.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,35 @@
+use warnings;
+use strict;
+
+=head1 NAME
+
+Jifty::Plugin::AuthLDAPOnly::Action::LDAPLogout
+
+=cut
+
+package Jifty::Plugin::AuthLDAPOnly::Action::LDAPLogout;
+use base qw/Jifty::Action/;
+
+=head2 arguments
+
+Return the email and password form fields
+
+=cut
+
+sub arguments {
+ return ( {} );
+}
+
+=head2 take_action
+
+Nuke the current user object
+
+=cut
+
+sub take_action {
+ my $self = shift;
+ Jifty->web->current_user(undef);
+ return 1;
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/CurrentUser.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/CurrentUser.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,39 @@
+use warnings;
+use strict;
+
+
+package Jifty::Plugin::AuthLDAPOnly::CurrentUser;
+
+use base qw/Jifty::CurrentUser Jifty::Plugin::AuthLDAPOnly/;
+
+=head2 new PARAMHASH
+
+Instantiate a new current user object, loading the user by paramhash:
+
+ my $item = Jifty::Plugin::AuthLDAPOnly::Model::Item->new( Jifty::Plugin::AuthCASOnly::CurrentUser->new(name => 'user'));
+
+if you give the param
+ _bootstrap => 1
+
+your object will be marked as a bootstrap user. You can use that to do an endrun around acls.
+
+=cut
+
+
+
+sub _init {
+ my $self = shift;
+ my %args = (@_);
+ my $AuthLDAPUserClass = $self->AuthLDAPUserClass;
+
+ if (delete $args{'_bootstrap'} ) {
+ $self->is_bootstrap_user(1);
+ } elsif (keys %args) {
+ $self->user_object($AuthLDAPUserClass->new(current_user => $self));
+ $self->user_object->load_by_cols(%args);
+ }
+ $self->SUPER::_init(%args);
+}
+
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Dispatcher.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Dispatcher.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::AuthLDAPOnly::Dispatcher;
+use Jifty::Dispatcher -base;
+
+# Put any plugin-specific dispatcher rules here.
+
+# Log out
+before 'ldaplogout' => run {
+ Jifty->web->request->add_action(
+ class => 'LDAPLogout',
+ moniker => 'ldaplogout',
+ );
+};
+
+
+# Login
+on 'ldaplogin' => run {
+ set 'action' =>
+ Jifty->web->new_action(
+ class => 'LDAPLogin',
+ moniker => 'ldaploginbox'
+ );
+ set 'next' => Jifty->web->request->continuation
+ || Jifty::Continuation->new(
+ request => Jifty::Request->new( path => "/" ) );
+};
+
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Model/LDAPUser.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/lib/Jifty/Plugin/AuthLDAPOnly/Model/LDAPUser.pm Thu Nov 16 12:26:16 2006
@@ -0,0 +1,71 @@
+package Jifty::Plugin::AuthLDAPOnly::Model::LDAPUser::Schema;
+use Jifty::DBI::Schema;
+use Scalar::Defer;
+
+column
+ name => type is 'text',
+ label is 'Name',
+ is mandatory,
+ is distinct;
+
+column 'created_on' =>
+ type is 'datetime',
+ is immutable,
+ default is defer { DateTime->now },
+ filters are 'Jifty::DBI::Filter::DateTime';
+
+
+package Jifty::Plugin::AuthLDAPOnly::Model::LDAPUser;
+use base qw/Jifty::Record/;
+
+sub create {
+ my $self = shift;
+ my %args = (@_);
+ my (@ret) = $self->SUPER::create(%args);
+
+# if ( $self->id and not $self->email_confirmed ) {
+# Jifty::Plugin::Login::Notification::ConfirmAddress->new( to => $self )
+# ->send;
+# }
+ return (@ret);
+}
+
+=head2 current_user_can
+
+Allows the current user to see all their own attributes and
+everyone else to see their username.
+
+Allows the current user to update any of their own attributes
+except whether or not their email has been confirmed.
+
+Passes everything else off to the superclass.
+
+=cut
+
+sub current_user_can {
+ my $self = shift;
+ my $right = shift;
+ my %args = (@_);
+ # This line breaks admin mode. I like admin mode.
+ # Carp::confess if ( $right eq 'read' and not $args{'column'} );
+ if ( $right eq 'read'
+ and $self->id == $self->current_user->id )
+ {
+ return 1;
+ }
+ elsif ( $right eq 'read' and $args{'column'} eq 'name' ) {
+ return (1);
+
+ }
+ elsif ( $right eq 'update'
+ and $self->id == $self->current_user->id
+# and $args{'column'} ne 'email_confirmed'
+ )
+ {
+ return (1);
+ }
+
+ return $self->SUPER::current_user_can( $right, %args );
+}
+
+1;
Added: jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogin
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogin Thu Nov 16 12:26:16 2006
@@ -0,0 +1,19 @@
+<%args>
+$action => undef
+$next => undef
+</%args>
+<&|/_elements/wrapper, title => 'Login' &>
+
+% if (not Jifty->web->current_user->id) {
+<h2><% _('Login') %></h2>
+<% Jifty->web->form->start(call => $next, name => "ldaploginbox") %>
+<% $action->form_field('name') %>
+<% $action->form_field('password') %>
+%#<% $action->form_field('remember') %>
+<% Jifty->web->form->submit(label => _('Login'), submit => $action) %>
+<% Jifty->web->form->end %>
+% }
+% else {
+<% _("You're already logged in.") %>
+% }
+</&>
Added: jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogout
==============================================================================
--- (empty file)
+++ jifty/trunk/plugins/AuthLDAPOnly/share/web/templates/ldaplogout Thu Nov 16 12:26:16 2006
@@ -0,0 +1,3 @@
+<&| /_elements/wrapper, title => "Logged out" &>
+<p><% _("Ok, you're now logged out. Have a good day.") %></p>
+</&>
More information about the Jifty-commit
mailing list