Compare commits

...

4 Commits

Author SHA1 Message Date
71aed9dcec
send all user data with oauth
All checks were successful
rvr-nextgen/pipeline/pr-master This commit looks good
2023-04-09 02:55:42 +02:00
b809542083
reload account page after save 2023-04-09 02:55:40 +02:00
749b93e3af
make it possible to modify personal user data fields 2023-04-09 02:55:10 +02:00
df3bf89079
add personal user data fields 2023-04-09 02:54:18 +02:00
5 changed files with 71 additions and 4 deletions

View File

@ -0,0 +1,5 @@
ALTER TABLE `users`
ADD `full_name` varchar(255) NOT NULL DEFAULT '',
ADD `nickname` varchar(255) NOT NULL DEFAULT '',
ADD `phone` varchar(255) NOT NULL DEFAULT '',
ADD `id_number` varchar(255) NOT NULL DEFAULT '';

View File

@ -106,7 +106,12 @@ class OAuthLoginController
'exp' => (int)$token->getExpiresDate()->format('U'),
'nonce' => $token->getNonce(),
'sub' => $user->getId(),
'email' => $user->getEmail()
'email' => $user->getEmail(),
'username' => $user->getUsername(),
'full_name' => $user->getFullName(),
'nickname' => $user->getNickname(),
'phone' => $user->getPhone(),
'id_number' => $user->getIdNumber()
];
$privateKey = file_get_contents(ROOT . '/' . $_ENV['JWT_RSA_PRIVATE_KEY']);
$jwt = JWT::encode($payload, $privateKey, 'RS256');

View File

@ -181,6 +181,10 @@ class UserController implements ISecured
$user->setPlainPassword($newPassword);
}
$user->setNickname($this->request->post('nickname'));
$user->setPhone($this->request->post('phone'));
$user->setIdNumber($this->request->post('id_number'));
$this->pdm->saveToDb($user);
$this->request->session()->delete('authenticated_with_google_until');

View File

@ -8,7 +8,7 @@ class User extends Model implements IUser
{
protected static string $table = 'users';
protected static array $fields = ['email', 'username', 'password', 'type', 'google_sub', 'created'];
protected static array $fields = ['email', 'username', 'password', 'type', 'google_sub', 'created', 'full_name', 'nickname', 'phone', 'id_number'];
private static array $types = ['user', 'admin'];
@ -24,6 +24,14 @@ class User extends Model implements IUser
private DateTime $created;
private string $fullName = '';
private string $nickname = '';
private string $phone = '';
private string $idNumber = '';
public function setEmail(string $email): void
{
$this->email = $email;
@ -66,6 +74,26 @@ class User extends Model implements IUser
$this->created = new DateTime($created);
}
public function setFullName(string $fullName): void
{
$this->fullName = $fullName;
}
public function setNickname(string $nickname): void
{
$this->nickname = $nickname;
}
public function setPhone(string $phone): void
{
$this->phone = $phone;
}
public function setIdNumber(string $idNumber): void
{
$this->idNumber = $idNumber;
}
public function getEmail(): string
{
return $this->email;
@ -101,6 +129,26 @@ class User extends Model implements IUser
return $this->created->format('Y-m-d H:i:s');
}
public function getFullName(): string
{
return $this->fullName;
}
public function getNickname(): string
{
return $this->nickname;
}
public function getPhone(): string
{
return $this->phone;
}
public function getIdNumber(): string
{
return $this->idNumber;
}
public function hasPermission(int $permission): bool
{
switch ($permission) {
@ -120,7 +168,7 @@ class User extends Model implements IUser
public function getDisplayName(): string
{
return $this->email;
return $this->nickname ?: $this->fullName;
}
public function checkPassword(string $password): bool

View File

@ -5,7 +5,7 @@
@section(main)
<h2>Account</h2>
<div class="box">
<form id="accountForm" action="/account" method="post" data-observe-inputs="email,username,password_new,password_new_confirm">
<form id="accountForm" action="/account" method="post" data-reload-on-success="true" data-observe-inputs="email,username,password_new,password_new_confirm,nickname,phone,id_number">
<?php if ($user['password'] !== null && $user['google_sub'] !== null): ?>
<p class="justify small">Please confirm your identity with your password or with Google to modify your account.</p>
<div class="inputWithButton">
@ -27,6 +27,11 @@
<input type="text" class="text big fullWidth marginTop" name="username" placeholder="Username" value="<?= $user['username'] ?>">
<input type="password" class="text big fullWidth marginTop" name="password_new" placeholder="New password" minlength="6">
<input type="password" class="text big fullWidth marginTop" name="password_new_confirm" placeholder="New password confirmation" minlength="6">
<hr>
<input type="text" class="text big fullWidth marginTop" name="full_name" placeholder="Full name" value="<?= $user['full_name'] ?>" disabled>
<input type="text" class="text big fullWidth marginTop" name="nickname" placeholder="Nickname" value="<?= $user['nickname'] ?>">
<input type="text" class="text big fullWidth marginTop" name="phone" placeholder="Phone" value="<?= $user['phone'] ?>">
<input type="text" class="text big fullWidth marginTop" name="id_number" placeholder="ID number" value="<?= $user['id_number'] ?>">
<p id="accountFormError" class="formError justify marginTop"></p>
<div class="right marginTop">
<button type="submit" name="submit" disabled>Save</button>