/** * password can be checked for * validity **/ public function testPasswordCheck() { $user = new UserModel(); $user->password = '******'; // the password must be hashed $this->assertNotEquals('zoom', $user->password); $this->assertEquals(true, $user->checkPassword('zoom')); }
/** * a token can be found by it's key **/ public function testFindToken() { $user = new UserModel(); $user->username = '******'; $user->password = '******'; $user->save(); $key = TokenModel::makeKey(); $token = TokenModel::generate($user, $key); $token->save(); $token2 = TokenModel::findToken($key); $this->assertNotNull($token2); }
/** * Assigns a new authentication token * * This route will assign the user a new * authentication token, if they provide * valid credentials. * * this token can be used on further * requests to authenticate the user. * **/ public function login($app) { $username = $app->request->post('username'); $password = $app->request->post('password'); if ($username === null || $password === null) { $app->response->setStatus(403); $app->response->write('username and password required'); return $app->response->finalize(); } $users = UserModel::findWhere(['username' => $username]); if (count($users) == 0) { $app->response->setStatus(401); $app->response->write('invalid credentials'); return $app->response->finalize(); } $user = $users[0]; if ($user->checkPassword($password)) { $previous_token = $app->getCookie(self::TOKEN_COOKIE); if ($previous_token != null) { TokenModel::invalidate($previous_token); } $key = TokenModel::makeKey(); $token = TokenModel::generate($user, $key); $token->save(); $app->setCookie(self::TOKEN_COOKIE, $key); $app->response->write("logged in"); return $app->response->finalize(); } else { $app->response->setStatus(403); $app->response->write('invalid credentials'); return $app->response->finalize(); } }
function it_is_initializable() { $this->shouldHaveType('Kagia\\EmojiApi\\Models\\TokenModel'); $user = UserModel::find(1); $this->getUserID()->shouldReturn($user->getID()); }
<?php require "vendor/autoload.php"; use Kagia\EmojiApp\Kernel; use Kagia\EmojiApi\Models\UserModel; $kernel = new Kernel(); $kernel->boot(); if (count($argv) == 3) { $username = $argv[1]; $password = $argv[2]; $user = new UserModel(); $user->username = $username; $user->password = $password; $user->save(); echo "user {$username} created!\n"; } else { echo "usage: create-user <username> <mypassword>\n"; }