Implement account edit; add SessionHelper, PasswordHelper and ActionResult
This commit is contained in:
parent
32add30c9d
commit
6ace072841
15 changed files with 637 additions and 68 deletions
|
|
@ -42,6 +42,9 @@ class AccountRepository extends BaseRepository
|
|||
return $accountList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws AccountNotFoundException
|
||||
*/
|
||||
public function fetchAccountById(int $accountId): Account
|
||||
{
|
||||
$statement = $this->pdo->prepare('SELECT * FROM mail_users WHERE user_id = :user_id LIMIT 1');
|
||||
|
|
@ -54,4 +57,50 @@ class AccountRepository extends BaseRepository
|
|||
$row = $statement->fetch(PDO::FETCH_ASSOC);
|
||||
return Account::createFromArray($row);
|
||||
}
|
||||
|
||||
public function checkUsernameAvailable(string $username): bool
|
||||
{
|
||||
$statement = $this->pdo->prepare('SELECT 1 FROM mail_users WHERE username = :username LIMIT 1');
|
||||
$statement->execute(['username' => $username]);
|
||||
return $statement->rowCount() === 0;
|
||||
}
|
||||
|
||||
public function updateAccountWithId(int $accountId, ?string $newUsername, ?string $newPasswordHash, bool $newActive,
|
||||
?string $newHomeDir, string $newMemo): void
|
||||
{
|
||||
$queryParams = [
|
||||
'user_id' => $accountId,
|
||||
'new_memo' => $newMemo,
|
||||
'new_active' => $newActive ? '1' : '0',
|
||||
];
|
||||
|
||||
$querySet = '';
|
||||
if (isset($newUsername)) {
|
||||
$querySet .= 'username = :new_username, ';
|
||||
$queryParams['new_username'] = $newUsername;
|
||||
}
|
||||
if (isset($newPasswordHash)) {
|
||||
$querySet .= 'password = :new_password, ';
|
||||
$queryParams['new_password'] = $newPasswordHash;
|
||||
}
|
||||
if (isset($newHomeDir)) {
|
||||
$querySet .= 'home_dir = :new_home_dir, ';
|
||||
$queryParams['new_home_dir'] = $newHomeDir;
|
||||
}
|
||||
|
||||
$query = '
|
||||
UPDATE mail_users
|
||||
SET
|
||||
' . $querySet . '
|
||||
memo = :new_memo,
|
||||
is_active = :new_active,
|
||||
modified_at = CURRENT_TIMESTAMP()
|
||||
WHERE
|
||||
user_id = :user_id
|
||||
LIMIT 1
|
||||
';
|
||||
|
||||
$statement = $this->pdo->prepare($query);
|
||||
$statement->execute($queryParams);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue