Changeset 461 for web/lib/Sophie/Controller/Login.pm
- Timestamp:
- 07/30/12 01:04:24 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
web/lib/Sophie/Controller/Login.pm
r460 r461 56 56 my ($self, $c, $mail) = @_; 57 57 58 my $valid_code = join('', map { printf("%02x", rand(256)) } (0 .. 15));58 my $valid_code = join('', map { sprintf("%02x", rand(256)) } (0 .. 15)); 59 59 60 60 $c->model('Base::AccountRequest')->create({ 61 61 mail => $mail, 62 62 valid_code => $valid_code, 63 ip_address => $c->req->address, 63 64 }); 65 $c->model('Base')->storage->dbh->commit; 66 67 return $valid_code; 64 68 } 65 69 … … 67 71 my ($self, $c) = @_; 68 72 69 warn $c->req->param('valid');70 warn $c->session->{valid_create_user};71 73 if ((my $valid = $c->req->param('valid')) && $c->req->param('username')) { 74 # create a login request 75 my $valid_code = $c->forward('create_request', [ $c->req->param('username') ],); 76 72 77 if ($valid == $c->session->{valid_create_user}) { 73 my $res = $c->forward('/admin/create_user', 74 [ 75 $c->req->param('username'), 76 $c->req->param('password'), 77 ] 78 ); 79 if ($res) { 80 $c->res->redirect($c->uri_for('/login', 81 { username => $c->req->param('username') } 82 )); 83 } 84 } 78 $c->stash->{email} = { 79 header => [ 80 to => $c->req->param('username'), 81 from => 'sophie@zarb.org', 82 subject => 'Sophie.zarb.org confirm request', 83 ], 84 body => " 85 Someone, hopefully you, request an account on Sophe web site. 86 87 To complete your subscription follow the link bellow: 88 89 " . $c->uri_for('/login/confirm', { id => $valid_code }) . " 90 91 If this is an error, simply ignore this mail. 92 93 ", 94 }; 95 $c->forward( $c->view('Email') ); 96 } 85 97 } 86 98 my $aa = (0 .. 9)[rand(9)]; … … 88 100 $c->stash->{valid} = "$aa + $bb"; 89 101 $c->session->{valid_create_user} = $aa + $bb; 102 } 103 104 sub confirm :Local { 105 my ($self, $c) = @_; 106 107 my $reqid = $c->req->param('id'); 108 109 my $request = $c->model('Base::AccountRequest')->find( 110 { 111 valid_code => $reqid, 112 }); 113 if (!$request) { 114 # ERR 115 } 116 $c->stash->{email} = $request->mail; 117 118 if ($c->req->param('password')) { 119 my $res = $c->forward('/admin/create_user', 120 [ 121 $request->mail, 122 $c->req->param('password'), 123 ] 124 ); 125 if ($res) { 126 $request->delete; 127 $c->model('Base')->storage->dbh->commit; 128 # TODO authenticate user directly 129 $c->res->redirect($c->uri_for('/login', 130 { username => $request->mail } 131 )); 132 } 133 } 90 134 } 91 135
Note: See TracChangeset
for help on using the changeset viewer.