Added login function

This commit is contained in:
2017-09-05 13:36:19 +07:00
parent 47d455063f
commit f8f4398007
5 changed files with 102 additions and 7 deletions

View File

@@ -2,9 +2,18 @@
namespace App\Controllers;
use Core\View;
use App\Models\Access;
use Core\Token;
use Core\Session;
use Core\Redirect;
class Home
{
private $access;
public function __construct()
{
$this->access = new Access();
}
public function index()
{
// echo "This is index of home"; // Nanti di replace sama twig view ke App\Views\Data\pengumuman.html
@@ -16,7 +25,20 @@ class Home
public function login()
{
// echo "You have to login"; // Nanti di replace sama twig view ke App\Views\Access\login.html
View::render('Access/login.html');
View::render('Access/login.html', [
'token' => Token::generate()
]);
return true;
}
public function put($args = [])
{
if ($this->access->login($args)) {
$table = 'user';
$id = Session::get('userid');
if ($this->access->update($table, ['status' => 1], $id)) {
Redirect::to('/');
}
}
}
}

View File

@@ -11,8 +11,10 @@ class Access extends \Core\Model
'id int(3) NOT NULL AUTO_INCREMENT',
'username varchar(25) NOT NULL',
'password char(13)',
'salt char(23)',
'name varchar(50)',
'registered_at timestamp DEFAULT CURRENT_TIMESTAMP',
'status tinyint DEFAULT 1',
'PRIMARY KEY (id)'
]
);
@@ -46,7 +48,7 @@ class Access extends \Core\Model
if ($query->execute([$id])) {
if ($query->rowCount() === 1) {
$result = $query->fetchAll(\PDO::FETCH_ASSOC);
$result = $query->fetch(\PDO::FETCH_ASSOC);
return $result;
}
}
@@ -55,4 +57,46 @@ class Access extends \Core\Model
echo $e->getMessage();
}
}
public function login($args = [])
{
try {
$username = $args['username'];
$password = $args['password'];
$db = static::connectDB();
$sql = "SELECT id, password, salt FROM user WHERE username = ?";
$query = $db->prepare($sql);
$query->bindValue(1, $username);
if ($query->execute()) {
if ($query->rowCount() === 1) {
$result = $query->fetch(\PDO::FETCH_ASSOC);
$id = $result['id'];
$salt = $result['salt'];
$hash = $result['password'];
if (\Core\Hash::compare($password, $salt, $hash)) {
$user = $this->showSingle($id);
\Core\Session::put('userid', $user['id']);
\Core\Session::put('username', $user['username']);
\Core\Session::put('name', $user['name']);
$user_now = $user['username'];
\Core\Session::flash('info', "$user_now logged in");
return true;
}
}
}
return false;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
}

View File

@@ -17,14 +17,16 @@
<input type="password" name="password" value="" placeholder="Type your password">
<!-- method -->
<input type="hidden" name="_method" value="post">
<input type="hidden" name="_method" value="put">
<!-- Token -->
<input type="hidden" name="_token" value="##TOKEN##">
<input type="hidden" name="_token" value="{{ token }}">
<br>
<button type="submit" name="login">Login</button>
</form>
<a href="/">-> Alternative route</a>
</body>
</html>