mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-23 09:02:41 +00:00
31 lines
1 KiB
PHP
31 lines
1 KiB
PHP
|
<?php
|
||
|
/** @license MIT
|
||
|
* Copyright 2017 J. King, Dustin Wilson et al.
|
||
|
* See LICENSE and AUTHORS files for details */
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
namespace JKingWeb\Arsse\REST\Miniflux;
|
||
|
|
||
|
use JKingWeb\Arsse\Arsse;
|
||
|
use JKingWeb\Arsse\User\ExceptionConflict;
|
||
|
|
||
|
class Token {
|
||
|
protected const TOKEN_LENGTH = 32;
|
||
|
|
||
|
public function tokenGenerate(string $user, ?string $label = null): string {
|
||
|
// Miniflux produces tokens in base64url alphabet
|
||
|
$t = str_replace(["+", "/"], ["-", "_"], base64_encode(random_bytes(self::TOKEN_LENGTH)));
|
||
|
return Arsse::$db->tokenCreate($user, "miniflux.login", $t, null, $label);
|
||
|
}
|
||
|
|
||
|
public function tokenList(string $user): array {
|
||
|
if (!Arsse::$db->userExists($user)) {
|
||
|
throw new ExceptionConflict("doesNotExist", ["action" => __FUNCTION__, "user" => $user]);
|
||
|
}
|
||
|
$out = [];
|
||
|
foreach (Arsse::$db->tokenList($user, "miniflux.login") as $r) {
|
||
|
$out[] = ['label' => $r['data'], 'id' => $r['id']];
|
||
|
}
|
||
|
return $out;
|
||
|
}
|
||
|
}
|