function loginMail()
{
    $errMsg = '';
    if (!isset($_GET['email'])) {
        $errMsg .= 'email';
    }
    if (!isset($_GET['password'])) {
        if (strlen($errMsg) > 0) {
            $errMsg .= ', ';
        }
        $errMsg .= 'password';
    }
    if (strlen($errMsg) > 0) {
        // At least one of the fields is not set, so return an error
        sendMessage(ERR, 'The following required parameters are not set: [' . $errMsg . ']');
        return;
    }
    $email = $_GET['email'];
    $password = $_GET['password'];
    // Check if user exists
    $db = acquireDatabase();
    $loader = new User($db);
    try {
        $res = $loader->loadWhere('email=?', [$email]);
        if (sizeof($res) > 0) {
            $user = $res[0];
            // Check if password is correct
            $validPassword = $user->getPassword();
            $password = User::encryptPassword($password);
            if ($validPassword == $password) {
                // Login successful -> return session id
                session_start();
                $_SESSION['uid'] = $user->getId();
                $_SESSION['email'] = $user->getEmail();
                if ($user->getState() == 'FILL_DATA') {
                    sendMessage(WARN, 'Login successful. Please complete your registration.');
                } else {
                    $_SESSION['name'] = $user->getName();
                    sendMessage(OK, 'Login successful.');
                }
            } else {
                sendMessage(ERR, 'Password invalid.');
            }
        } else {
            // User doesn't exist
            sendMessage(ERR, 'User invalid.');
        }
    } catch (DbException $e) {
        sendMessage(ERR, $e->getMessage());
    }
    $db->close();
}
    // At least one of the fields is not set, so return an error
    sendMessage(ERR, 'The following required parameters are not set: [' . $errMsg . ']');
    return;
}
$email = $_GET['email'];
$password = $_GET['password'];
// Check mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    sendMessage(ERR, 'The format of the given email is invalid: [' . $email . ']');
    return;
}
// Check if the mail already exists
$db = acquireDatabase();
$loader = new User($db);
try {
    $res = $loader->loadWhere('email=?', [$email]);
    if (sizeof($res) > 0) {
        $db->close();
        sendMessage(ERR, 'This email is already in use. Did you forget your password?');
        return;
    }
    $user = new User($db);
    $user->setEmail($email);
    $user->setAndEncryptPassword($password);
    //	$user->setState('CONF_MAIL');
    $user->setState('FILLDATA');
    // Next step is to fill the missing data like name
    $user->save();
    session_start();
    $user->reload(['email']);
    $_SESSION['uid'] = $user->getId();
Example #3
0
 public function testLoadWhere()
 {
     $user = new User();
     $user->name = 'test ' . rand();
     $user->description = '';
     $user->save();
     $users = User::loadWhere(['id' => [$user->id]]);
     $this->assertEquals($user, $users[0]);
 }