X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fplatal.php;h=baa18b10c407e6f63e90745a4d32e94d831ea7d0;hb=821198c7f5394839f6421c54a32ae2a0dca19b3d;hp=b7a641d5b2bca814b97fc1092b0b4fd9b393a424;hpb=aba13e873ae85fae7e461b590b49a7e1b4489df4;p=platal.git diff --git a/modules/platal.php b/modules/platal.php index b7a641d..baa18b1 100644 --- a/modules/platal.php +++ b/modules/platal.php @@ -38,26 +38,27 @@ class PlatalModule extends PLModule function handlers() { return array( - 'index' => $this->make_hook('index', AUTH_PUBLIC), - 'cacert.pem' => $this->make_hook('cacert', AUTH_PUBLIC), - 'changelog' => $this->make_hook('changelog', AUTH_PUBLIC), + 'index' => $this->make_hook('index', AUTH_PUBLIC), + 'cacert.pem' => $this->make_hook('cacert', AUTH_PUBLIC), + 'changelog' => $this->make_hook('changelog', AUTH_PUBLIC), // Preferences thingies - 'prefs' => $this->make_hook('prefs', AUTH_COOKIE, 'user,groups'), - 'prefs/rss' => $this->make_hook('prefs_rss', AUTH_COOKIE, 'user'), - 'prefs/webredirect' => $this->make_hook('webredir', AUTH_MDP, 'mail'), - 'prefs/skin' => $this->make_hook('skin', AUTH_COOKIE, 'user'), + 'prefs' => $this->make_hook('prefs', AUTH_COOKIE, 'user,groups'), + 'prefs/rss' => $this->make_hook('prefs_rss', AUTH_COOKIE, 'user'), + 'prefs/webredirect' => $this->make_hook('webredir', AUTH_PASSWD, 'mail'), + 'prefs/skin' => $this->make_hook('skin', AUTH_COOKIE, 'user'), + 'prefs/email' => $this->make_hook('prefs_email', AUTH_COOKIE, 'mail'), // password related thingies - 'password' => $this->make_hook('password', AUTH_MDP, 'user,groups'), - 'tmpPWD' => $this->make_hook('tmpPWD', AUTH_PUBLIC), - 'password/smtp' => $this->make_hook('smtppass', AUTH_MDP, 'mail'), - 'recovery' => $this->make_hook('recovery', AUTH_PUBLIC), + 'password' => $this->make_hook('password', AUTH_PASSWD, 'user,groups'), + 'password/smtp' => $this->make_hook('smtppass', AUTH_PASSWD, 'mail'), + 'tmpPWD' => $this->make_hook('tmpPWD', AUTH_PUBLIC), + 'recovery' => $this->make_hook('recovery', AUTH_PUBLIC), 'recovery/ext' => $this->make_hook('recovery_ext', AUTH_PUBLIC), 'register/ext' => $this->make_hook('register_ext', AUTH_PUBLIC), - 'exit' => $this->make_hook('exit', AUTH_PUBLIC), - 'review' => $this->make_hook('review', AUTH_PUBLIC), - 'deconnexion.php' => $this->make_hook('exit', AUTH_PUBLIC), + 'exit' => $this->make_hook('exit', AUTH_PUBLIC), + 'review' => $this->make_hook('review', AUTH_PUBLIC), + 'deconnexion.php' => $this->make_hook('exit', AUTH_PUBLIC), ); } @@ -199,6 +200,47 @@ class PlatalModule extends PLModule } } + function handler_prefs_email($page) + { + $page->changeTpl('platal/email_preferences.tpl'); + + if (Post::has('submit')) { + S::assert_xsrf_token(); + + $from_email = Post::t('from_email'); + $from_format = Post::v('from_format'); + + // Checks email. + $email_regex = '/^[a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+$/i'; + if (!preg_match($email_regex, $from_email)) { + $full_regex = '/^[^<]*<[a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+>$/i'; + if (!preg_match($full_regex, $from_email)) { + $page->trigError("L'adresse email est erronée."); + $error = true; + $page->assign('from_email', $from_email); + $page->assign('from_format', $from_format); + $page->assign('error', true); + return; + } + } + + // Saves data. + XDB::execute('UPDATE accounts + SET from_email = {?}, from_format = {?} + WHERE uid = {?}', + $from_email, ($from_format == 'html' ? 'html' : 'text'), S::user()->id()); + $page->trigSuccess('Données enregistrées.'); + } + + $data = XDB::fetchOneAssoc('SELECT from_email, from_format + FROM accounts + WHERE uid = {?}', + S::user()->id()); + $page->assign('from_email', $data['from_email']); + $page->assign('from_format', $data['from_format']); + $page->assign('error', false); + } + function handler_password($page) { global $globals; @@ -416,7 +458,7 @@ Adresse de secours : ' . $to)); // Try to start a session (so the user don't have to log in); we will use // the password available in Post:: to authenticate the user. - Platal::session()->start(AUTH_MDP); + Platal::session()->start(AUTH_PASSWD); $page->changeTpl('platal/tmpPWD.success.tpl'); } else {