feat: add deploy-only token permission
This commit is contained in:
@@ -12,10 +12,9 @@ class ApiTokens extends Component
|
|||||||
public $tokens = [];
|
public $tokens = [];
|
||||||
|
|
||||||
public bool $viewSensitiveData = false;
|
public bool $viewSensitiveData = false;
|
||||||
|
|
||||||
public bool $readOnly = true;
|
public bool $readOnly = true;
|
||||||
|
|
||||||
public bool $rootAccess = false;
|
public bool $rootAccess = false;
|
||||||
|
public bool $triggerDeploy = false;
|
||||||
|
|
||||||
public array $permissions = ['read-only'];
|
public array $permissions = ['read-only'];
|
||||||
|
|
||||||
@@ -62,12 +61,25 @@ class ApiTokens extends Component
|
|||||||
$this->permissions = ['*'];
|
$this->permissions = ['*'];
|
||||||
$this->readOnly = false;
|
$this->readOnly = false;
|
||||||
$this->viewSensitiveData = false;
|
$this->viewSensitiveData = false;
|
||||||
|
$this->triggerDeploy = false;
|
||||||
} else {
|
} else {
|
||||||
$this->readOnly = true;
|
$this->readOnly = true;
|
||||||
$this->permissions = ['read-only'];
|
$this->permissions = ['read-only'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updatedTriggerDeploy()
|
||||||
|
{
|
||||||
|
if ($this->triggerDeploy) {
|
||||||
|
$this->permissions[] = 'trigger-deploy';
|
||||||
|
$this->permissions = array_diff($this->permissions, ['*']);
|
||||||
|
$this->rootAccess = false;
|
||||||
|
} else {
|
||||||
|
$this->permissions = array_diff($this->permissions, ['trigger-deploy']);
|
||||||
|
}
|
||||||
|
$this->makeSureOneIsSelected();
|
||||||
|
}
|
||||||
|
|
||||||
public function makeSureOneIsSelected()
|
public function makeSureOneIsSelected()
|
||||||
{
|
{
|
||||||
if (count($this->permissions) == 0) {
|
if (count($this->permissions) == 0) {
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
<x-forms.checkbox label="Root Access" wire:model.live="rootAccess"></x-forms.checkbox>
|
<x-forms.checkbox label="Root Access" wire:model.live="rootAccess"></x-forms.checkbox>
|
||||||
<x-forms.checkbox label="Read-only" wire:model.live="readOnly"></x-forms.checkbox>
|
<x-forms.checkbox label="Read-only" wire:model.live="readOnly"></x-forms.checkbox>
|
||||||
<x-forms.checkbox label="View Sensitive Data" wire:model.live="viewSensitiveData"></x-forms.checkbox>
|
<x-forms.checkbox label="View Sensitive Data" wire:model.live="viewSensitiveData"></x-forms.checkbox>
|
||||||
|
<x-forms.checkbox label="Trigger Deploy Webhooks" wire:model.live="triggerDeploy"></x-forms.checkbox>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@if (session()->has('token'))
|
@if (session()->has('token'))
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ Route::group([
|
|||||||
Route::patch('/security/keys/{uuid}', [SecurityController::class, 'update_key'])->middleware([IgnoreReadOnlyApiToken::class]);
|
Route::patch('/security/keys/{uuid}', [SecurityController::class, 'update_key'])->middleware([IgnoreReadOnlyApiToken::class]);
|
||||||
Route::delete('/security/keys/{uuid}', [SecurityController::class, 'delete_key'])->middleware([IgnoreReadOnlyApiToken::class]);
|
Route::delete('/security/keys/{uuid}', [SecurityController::class, 'delete_key'])->middleware([IgnoreReadOnlyApiToken::class]);
|
||||||
|
|
||||||
Route::match(['get', 'post'], '/deploy', [DeployController::class, 'deploy'])->middleware([IgnoreReadOnlyApiToken::class]);
|
Route::match(['get', 'post'], '/deploy', [DeployController::class, 'deploy'])
|
||||||
|
->middleware([IgnoreReadOnlyApiToken::class, 'auth:sanctum', 'ability:trigger-deploy']);
|
||||||
Route::get('/deployments', [DeployController::class, 'deployments']);
|
Route::get('/deployments', [DeployController::class, 'deployments']);
|
||||||
Route::get('/deployments/{uuid}', [DeployController::class, 'deployment_by_uuid']);
|
Route::get('/deployments/{uuid}', [DeployController::class, 'deployment_by_uuid']);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user