This commit is contained in:
2022-11-29 14:17:11 +01:00
parent c9a7da688f
commit 25ef07b0b7
32 changed files with 1275 additions and 507 deletions

View File

@@ -2,6 +2,7 @@
namespace Core\Objects\DatabaseEntity;
use Core\Driver\SQL\SQL;
use Core\Objects\DatabaseEntity\Attribute\MaxLength;
use Core\Objects\DatabaseEntity\Controller\DatabaseEntity;
@@ -25,4 +26,18 @@ class ApiKey extends DatabaseEntity {
"validUntil" => $this->validUntil->getTimestamp()
];
}
public function getValidUntil(): \DateTime {
return $this->validUntil;
}
public function refresh(SQL $sql, int $days): bool {
$this->validUntil = (new \DateTime())->modify("+$days days");
return $this->save($sql, ["valid_until"]);
}
public function revoke(SQL $sql): bool {
$this->active = false;
return $this->save($sql, ["active"]);
}
}

View File

@@ -75,6 +75,7 @@ abstract class DatabaseEntity {
}
}
// TODO: rather take property names here instead of $columns? and translate then using DatabaseEntityHandler::columns[$propertyName]
public function save(SQL $sql, ?array $columns = null, bool $saveNM = false): bool {
$handler = self::getHandler($sql);
$res = $handler->insertOrUpdate($this, $columns, $saveNM);

View File

@@ -136,6 +136,6 @@ class GpgKey extends DatabaseEntity {
public function confirm(SQL $sql): bool {
$this->confirmed = true;
return $this->save($sql);
return $this->save($sql, ["confirmed"]);
}
}

View File

@@ -118,7 +118,7 @@ class MailQueueItem extends DatabaseEntity {
$this->status = self::STATUS_SUCCESS;
}
$this->save($context->getSQL());
$this->save($context->getSQL(), ["status", "retry_count", "next_try", "error_message"]);
return $success;
}
}

View File

@@ -109,7 +109,7 @@ class Session extends DatabaseEntity {
public function destroy(): bool {
session_destroy();
$this->active = false;
return $this->save($this->context->getSQL());
return $this->save($this->context->getSQL(), ["active"]);
}
public function update(): bool {
@@ -120,7 +120,7 @@ class Session extends DatabaseEntity {
$sql = $this->context->getSQL();
return $this->user->update($sql) &&
$this->save($sql);
$this->save($sql, ["expires", "data"]);
}
public function getCsrfToken(): string {

View File

@@ -55,7 +55,7 @@ class UserToken extends DatabaseEntity {
public function invalidate(SQL $sql): bool {
$this->used = true;
return $this->save($sql);
return $this->save($sql, ["used"]);
}
public function getUser(): User {
@@ -64,7 +64,7 @@ class UserToken extends DatabaseEntity {
public function updateDurability(SQL $sql, int $validHours): bool {
$this->validUntil = (new \DateTime())->modify("+$validHours HOURS");
return $this->save($sql);
return $this->save($sql, ["valid_until"]);
}
public function getToken(): string {