/** * Log into the site * * @uses $CFG * @param string $email * @param string $password * @return User object if successful else Error object */ function userLogin($email, $password) { global $CFG, $ERROR; clearSession(); /** Just in case **/ if ($password == "" || $email == "") { $ERROR = new error(); $ERROR->createLoginFailedError(); return $ERROR; } $user = new User(); $user->setEmail($email); $user = $user->getByEmail(); if ($user instanceof User) { // make sure this user is an active user $status = $user->getStatus(); if ($status == $CFG->USER_STATUS_ACTIVE || $status == $CFG->USER_STATUS_REPORTED) { if (strcmp($user->getAuthType(), $CFG->AUTH_TYPE_EVHUB) == 0) { $passwordCheck = $user->validPassword($password); if ($passwordCheck) { createSession($user); $user->resetInvitationCode(); // hang over from Cohere groups code $user->load(); return $user; } else { $ERROR = new error(); $ERROR->createLoginFailedError(); return $ERROR; } } else { $ERROR = new error(); $provider = ucfirst($user->getAuthType()); $ERROR->createLoginFailedExternalError($provider); return $ERROR; } } else { $ERROR = new error(); if ($status == $CFG->USER_STATUS_UNAUTHORIZED) { $ERROR->createLoginFailedUnauthorizedError(); } else { if ($status == $CFG->USER_STATUS_SUSPENDED) { $ERROR->createLoginFailedSuspendedError(); } else { if ($status == $CFG->USER_STATUS_UNVALIDATED) { $ERROR->createLoginFailedUnvalidatedError(); } else { $ERROR->createAccessDeniedError(); } } } return $ERROR; } } else { $ERROR = new error(); $ERROR->createLoginFailedError(); return $ERROR; } }