41 lines
912 B
PHP
41 lines
912 B
PHP
<?php
|
|
|
|
namespace Lucent\AccessKey;
|
|
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Str;
|
|
use Lucent\Id\Id;
|
|
use Lucent\LucentException;
|
|
use Lucent\Member\Role;
|
|
|
|
class AccessKeyService
|
|
{
|
|
|
|
public static function create(string $name, string $role): AccessKey
|
|
{
|
|
$showOnceToken = Str::random(48);
|
|
$accessKey = new AccessKey(
|
|
_id: Id::new(),
|
|
name: $name,
|
|
token: hash("sha256", $showOnceToken),
|
|
role: Role::from($role),
|
|
showOnceToken: $showOnceToken,
|
|
);
|
|
|
|
AccessKeyRepo::add($accessKey);
|
|
return $accessKey;
|
|
}
|
|
|
|
public static function findByToken(string $token): ?AccessKey
|
|
{
|
|
$hashedToken = hash("sha256", $token);
|
|
return AccessKeyRepo::findByToken($hashedToken);
|
|
}
|
|
|
|
public static function remove(string $id): void
|
|
{
|
|
|
|
AccessKeyRepo::remove($id);
|
|
}
|
|
}
|