Exemplo n.º 1
0
/**
 * 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;
    }
}