mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
95 lines
2.2 KiB
PHP
95 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Kanboard\Model;
|
|
|
|
use Kanboard\Core\Base;
|
|
|
|
/**
|
|
* Password Reset Model
|
|
*
|
|
* @package Kanboard\Model
|
|
* @author Frederic Guillot
|
|
*/
|
|
class PasswordResetModel extends Base
|
|
{
|
|
/**
|
|
* SQL table name
|
|
*
|
|
* @var string
|
|
*/
|
|
const TABLE = 'password_reset';
|
|
|
|
/**
|
|
* Token duration (30 minutes)
|
|
*
|
|
* @var integer
|
|
*/
|
|
const DURATION = 1800;
|
|
|
|
/**
|
|
* Get all tokens
|
|
*
|
|
* @access public
|
|
* @param integer $user_id
|
|
* @return array
|
|
*/
|
|
public function getAll($user_id)
|
|
{
|
|
return $this->db->table(self::TABLE)->eq('user_id', $user_id)->desc('date_creation')->limit(100)->findAll();
|
|
}
|
|
|
|
/**
|
|
* Generate a new reset token for a user
|
|
*
|
|
* @access public
|
|
* @param string $username
|
|
* @param integer $expiration
|
|
* @return boolean|string
|
|
*/
|
|
public function create($username, $expiration = 0)
|
|
{
|
|
$user_id = $this->db->table(UserModel::TABLE)->eq('username', $username)->neq('email', '')->notNull('email')->findOneColumn('id');
|
|
|
|
if (! $user_id) {
|
|
return false;
|
|
}
|
|
|
|
$token = $this->token->getToken();
|
|
|
|
$result = $this->db->table(self::TABLE)->insert(array(
|
|
'token' => $token,
|
|
'user_id' => $user_id,
|
|
'date_expiration' => $expiration ?: time() + self::DURATION,
|
|
'date_creation' => time(),
|
|
'ip' => $this->request->getIpAddress(),
|
|
'user_agent' => $this->request->getUserAgent(),
|
|
'is_active' => 1,
|
|
));
|
|
|
|
return $result ? $token : false;
|
|
}
|
|
|
|
/**
|
|
* Get user id from the token
|
|
*
|
|
* @access public
|
|
* @param string $token
|
|
* @return integer
|
|
*/
|
|
public function getUserIdByToken($token)
|
|
{
|
|
return $this->db->table(self::TABLE)->eq('token', $token)->eq('is_active', 1)->gte('date_expiration', time())->findOneColumn('user_id');
|
|
}
|
|
|
|
/**
|
|
* Disable all tokens for a user
|
|
*
|
|
* @access public
|
|
* @param integer $user_id
|
|
* @return boolean
|
|
*/
|
|
public function disable($user_id)
|
|
{
|
|
return $this->db->table(self::TABLE)->eq('user_id', $user_id)->update(array('is_active' => 0));
|
|
}
|
|
}
|