source: LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Create.pm @ 176

Last change on this file since 176 was 176, checked in by nanardon, 15 years ago
  • end user creation
  • Property svn:keywords set to Id Rev
File size: 2.7 KB
Line 
1package LATMOS::Accounts::Web::Controller::Create;
2
3use strict;
4use warnings;
5use base 'LATMOS::Accounts::Web::Controller';
6use LATMOS::Accounts::Utils;
7
8=head1 NAME
9
10LATMOS::Accounts::Web::Controller::Create - Catalyst Controller
11
12=head1 DESCRIPTION
13
14Catalyst Controller.
15
16=head1 METHODS
17
18=cut
19
20
21=head2 index
22
23=cut
24
25sub index : Private {
26    my ( $self, $c ) = @_;
27
28    $c->response->body('Matched LATMOS::Accounts::Web::Controller::Create in Create.');
29}
30
31sub user : Local {
32    my ( $self, $c ) = @_;
33
34    my $base = $c->model('Accounts')->db;
35    $c->stash->{form} = $c->model('AttrForms', undef, 'user', $base);
36    for ($c->req->param('step') || '') {
37        /^1$/ and do {
38            $c->stash->{step} = 2;
39            my $acc = $c->model('Accounts')->accounts;
40            foreach ($acc->Parameters('_defattr_')) {
41                if (/^user\.(.*)/) {
42                    $c->req->params->{$1} ||= $acc->val('_defattr_', $_);
43                }
44            }
45            $c->req->params->{exported} = 1;
46            if (! $c->req->params->{id}) {
47                for (1) {
48                    my $login;
49                    if ($c->req->param('sn')) {
50                        $login = lc(to_ascii($c->req->param('sn')));
51                        length($login) > 10 and $login = substr($login, 0, 8);
52                        $base->get_object('user', $login) or do {
53                            $c->req->params->{id} = $login;
54                            last;
55                        };
56                        if ($c->req->param('givenName')) {
57                            length($login) > 8 and $login = substr($login, 0, 8);
58                            $login .= substr(lc(to_ascii($c->req->param('givenName'))), 0, 1);
59                            $base->get_object('user', $login) or do {
60                                $c->req->params->{id} = $login;
61                                last;
62                            };
63                        }
64                    }
65                }
66            }
67            last;
68        };
69        /^2$/ and do {
70            $c->stash->{step} = 2;
71            $base->get_object('user', $c->req->params->{id}) and do {
72                $c->stash->{idexists} = 1;
73                return;
74            };
75            $base->create_c_object('user', $c->req->params->{id},
76                %{ $c->req->params },
77                exported => $c->req->param('exported') ? 1 : 0,
78            )
79             or return;
80            $base->commit;
81            $c->res->redirect($c->uri_for('/users', $c->req->params->{id}));
82            last;
83        };
84    }
85}
86
87=head1 AUTHOR
88
89Thauvin Olivier
90
91=head1 LICENSE
92
93This library is free software, you can redistribute it and/or modify
94it under the same terms as Perl itself.
95
96=cut
97
981;
Note: See TracBrowser for help on using the repository browser.