function post_queue_u_create($job) {
global $globals;
- // Retrieves the user parameters (userid and forlife).
+ // Retrieves the user parameters (GoogleApps username and user_id).
$parameters = json_decode($job['j_parameters'], true);
- $forlife = isset($parameters['username']) ? $parameters['username'] : null;
- $userid = $job['q_recipient_id'];
- if (!$forlife || !$userid) {
+ $username = isset($parameters['username']) ? $parameters['username'] : null;
+ if (!($user = User::getSilent($username))) {
return;
}
// Adds a redirection to the Google Apps delivery address, if requested by
// the user at creation time.
- $account = new GoogleAppsAccount($userid, $forlife);
+ $account = new GoogleAppsAccount($user);
if ($account->activate_mail_redirection) {
require_once('emails.inc.php');
- $storage = new EmailStorage($userid, 'googleapps');
+ $storage = new EmailStorage($user->id(), 'googleapps');
$storage->activate();
}
$res = XDB::query(
"SELECT FIND_IN_SET('femme', u.flags), prenom
FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON (a.id = u.user_id)
- WHERE a.alias = {?}",
- $forlife);
+ WHERE u.user_id = {?}", $user->id());
list($sexe, $prenom) = $res->fetchOneRow();
$mailer = new PlMailer('googleapps/create.mail.tpl');
$mailer->assign('account', $account);
- $mailer->assign('email', $forlife . '@' . $globals->mail->domain);
+ $mailer->assign('email', $user->bestEmail());
$mailer->assign('googleapps_domain', $globals->mailstorage->googleapps_domain);
$mailer->assign('prenom', $prenom);
$mailer->assign('sexe', $sexe);
// to the Google Apps delivery address, provided the account is active (it might
// have been deleted between the unsuspension and the post-queue processing).
$parameters = json_decode($job['j_parameters'], true);
- $forlife = isset($parameters['username']) ? $parameters['username'] : null;
- $userid = $job['q_recipient_id'];
- if (!$forlife || !$userid) {
+ $username = isset($parameters['username']) ? $parameters['username'] : null;
+ if (!($user = User::getSilent($username))) {
return;
}
if (isset($parameters['suspended']) && $parameters['suspended'] == false) {
require_once('emails.inc.php');
- $account = new GoogleAppsAccount($userid, $forlife);
+ $account = new GoogleAppsAccount($user);
if ($account->active()) {
// Re-adds the email redirection (if the user did request it).
if ($account->activate_mail_redirection) {
- $storage = new EmailStorage($userid, 'googleapps');
+ $storage = new EmailStorage($user->id, 'googleapps');
$storage->activate();
}
$res = XDB::query(
"SELECT FIND_IN_SET('femme', u.flags), prenom
FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON (a.id = u.user_id)
- WHERE a.alias = {?}",
- $forlife);
+ WHERE u.user_id = {?}", $user->id());
list($sexe, $prenom) = $res->fetchOneRow();
$mailer = new PlMailer('googleapps/unsuspend.mail.tpl');
$mailer->assign('account', $account);
- $mailer->assign('email', $forlife . '@' . $globals->mail->domain);
+ $mailer->assign('email', $user->bestEmail());
$mailer->assign('prenom', $prenom);
$mailer->assign('sexe', $sexe);
$mailer->send();
class GoogleAppsAccount
{
// User identification: user id, and forlife.
- private $uid;
+ private $user;
public $g_account_name;
// Local account parameters.
// Constructs the account object, by retrieving all informations from the
// GApps account table, from GApps job queue, and from plat/al validation queue.
- public function __construct($uid, $account_name = NULL)
+ public function __construct(User &$user)
{
- if ($account_name == NULL) {
- require_once 'user.func.inc.php';
- $account_name = get_user_forlife($uid, '_silent_user_callback');
+ $this->user = &$user;
+ if (!$this->user || !$this->user->login()) {
+ return;
}
- $this->uid = $uid;
- $this->g_account_name = $account_name;
+ // TODO: switch to multi-domain Google Apps, and use $this->user->forlifeEmail()
+ // as Google Apps idenfiant (requires changes in gappsd).
+ $this->g_account_name = $this->user->login();
$this->g_status = NULL;
- if (!$this->g_account_name) {
- return;
- }
$res = XDB::query(
"SELECT l_sync_password, l_activate_mail_redirection,
UNIX_TIMESTAMP(r_last_login) as r_last_login,
UNIX_TIMESTAMP(r_last_webmail) as r_last_webmail
FROM gapps_accounts
- WHERE g_account_name = {?}",
- $account_name);
+ WHERE g_account_name = {?}", $this->g_account_name);
if ($account = $res->fetchOneAssoc()) {
$this->sync_password = $account['l_sync_password'];
$this->activate_mail_redirection = $account['l_activate_mail_redirection'];
FROM gapps_queue
WHERE q_recipient_id = {?} AND
p_status IN ('idle', 'active', 'softfail')
- GROUP BY j_type",
- $this->uid);
+ GROUP BY j_type", $this->user->id());
$pending = $res->fetchOneAssoc();
$this->pending_create = $pending['pending_create'];
$this->pending_update = $pending['pending_update'];
{
require_once('validations.inc.php');
$this->pending_validation_unsuspend =
- Validate::get_typed_requests_count($this->uid, 'gapps-unsuspend');
+ Validate::get_typed_requests_count($this->user->id(), 'gapps-unsuspend');
}
// Retrieves all the pending update job in the gappsd queue for the current
FROM gapps_queue
WHERE q_recipient_id = {?} AND
p_status IN ('idle', 'active', 'softfail') AND
- j_type = 'u_update'",
- $this->uid);
+ j_type = 'u_update'", $this->user->id());
while ($update = $res->next()) {
$update_data = json_decode($update["j_parameters"], true);
p_priority = 'immediate',
j_type = {?}, j_parameters = {?}",
S::v('uid'),
- $this->uid,
+ $this->user->id(),
$type,
json_encode($parameters));
}
if (!$this->pending_update_suspension && !$this->pending_validation_unsuspend) {
require_once('validations.inc.php');
- $unsuspend = new GoogleAppsUnsuspendReq($this->uid);
+ $unsuspend = new GoogleAppsUnsuspendReq($this->user->id());
$unsuspend->submit();
$this->pending_validation_unsuspend = true;
}
$res = XDB::query(
"SELECT password
FROM auth_user_md5
- WHERE user_id = {?}",
- $this->uid);
+ WHERE user_id = {?}", $this->user->id());
$password = ($res->numRows() > 0 ? $res->fetchOneCell() : false);
} else {
$password = false;
$res = XDB::query(
"SELECT nom, nom_usage, prenom
FROM auth_user_md5
- WHERE user_id = {?}",
- $this->uid);
+ WHERE user_id = {?}", $this->user->id());
list($nom, $nom_usage, $prenom) = $res->fetchOneRow();
// Adds an 'unprovisioned' entry in the gapps_accounts table.
g_first_name = {?},
g_last_name = {?},
g_status = 'unprovisioned'",
- $this->uid,
+ $this->user->id(),
$password_sync,
$redirect_mails,
$this->g_account_name,
));
// Updates the GoogleAppsAccount status.
- $this->__construct($this->uid, $this->g_account_name);
+ $this->__construct($this->user);
}
}
$page->addJsLink('motdepasse.js');
$page->assign('xorg_title', 'Polytechnique.org - Compte Google Apps');
- $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife'));
+ $account = new GoogleAppsAccount(S::user());
// Fills up the 'is Google Apps redirection active' variable.
$page->assign('redirect_active', false);
if (!$user && Post::has('login')) {
$user = Post::v('login');
}
- if ($user && !is_numeric($user)) {
- $res = XDB::query("SELECT id FROM aliases WHERE alias = {?} AND type != 'homonyme'", $user);
- $user = $res->fetchOneCell();
- }
+ $user = User::get($user);
if ($user) {
$account = new GoogleAppsAccount($user);
- $storage = new EmailStorage($user, 'googleapps');
+ $storage = new EmailStorage($user->id(), 'googleapps');
// Force synchronization of plat/al and Google Apps passwords.
if ($action == 'forcesync' && $account->sync_password) {
- $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user);
+ $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user->id());
$account->set_password($res->fetchOneCell());
$page->trigSuccess('Le mot de passe a été synchronisé.');
}
// Displays basic account information.
$page->assign('account', $account);
- $page->assign('admin_account', GoogleAppsAccount::is_administrator($user));
+ $page->assign('admin_account', GoogleAppsAccount::is_administrator($user->id()));
$page->assign('googleapps_storage', $storage->active);
- $page->assign('user', $user);
+ $page->assign('user', $user->id());
// Retrieves user's pending requests.
$res = XDB::iterator(
"SELECT q_id, q_recipient_id, p_status, j_type, UNIX_TIMESTAMP(p_entry_date) AS p_entry_date
FROM gapps_queue
WHERE q_recipient_id = {?}
- ORDER BY p_entry_date DESC", $user);
+ ORDER BY p_entry_date DESC", $user->id());
$page->assign('requests', $res);
}
}