2024-03-06 16:30:19 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Models;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
use Illuminate\Support\Facades\Crypt;
|
|
|
|
|
|
|
|
|
|
class OauthSetting extends Model
|
|
|
|
|
{
|
|
|
|
|
use HasFactory;
|
|
|
|
|
|
2024-12-13 11:03:05 +00:00
|
|
|
protected $fillable = ['provider', 'client_id', 'client_secret', 'redirect_uri', 'tenant', 'base_url', 'enabled'];
|
|
|
|
|
|
2024-03-06 16:30:19 +00:00
|
|
|
protected function clientSecret(): Attribute
|
|
|
|
|
{
|
|
|
|
|
return Attribute::make(
|
2024-06-10 20:43:34 +00:00
|
|
|
get: fn (?string $value) => empty($value) ? null : Crypt::decryptString($value),
|
|
|
|
|
set: fn (?string $value) => empty($value) ? null : Crypt::encryptString($value),
|
2024-03-06 16:30:19 +00:00
|
|
|
);
|
|
|
|
|
}
|
2024-12-13 11:03:05 +00:00
|
|
|
|
|
|
|
|
public function couldBeEnabled(): bool
|
|
|
|
|
{
|
|
|
|
|
switch ($this->provider) {
|
|
|
|
|
case 'azure':
|
2025-05-20 12:35:39 +00:00
|
|
|
return filled($this->client_id) && filled($this->client_secret) && filled($this->tenant);
|
2024-12-13 11:03:05 +00:00
|
|
|
case 'authentik':
|
2025-06-18 12:29:46 +00:00
|
|
|
case 'clerk':
|
2025-05-20 12:35:39 +00:00
|
|
|
return filled($this->client_id) && filled($this->client_secret) && filled($this->base_url);
|
2024-12-13 11:03:05 +00:00
|
|
|
default:
|
2025-05-20 12:35:39 +00:00
|
|
|
return filled($this->client_id) && filled($this->client_secret);
|
2024-12-13 11:03:05 +00:00
|
|
|
}
|
|
|
|
|
}
|
2024-03-06 16:30:19 +00:00
|
|
|
}
|