2023-08-10 15:38:10 -05:00
|
|
|
/**
|
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
2024-05-31 11:29:24 -07:00
|
|
|
* SPDX-License-Identifier: BUSL-1.1
|
2023-08-10 15:38:10 -05:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import ModelAbility from './model';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Provides abilities for sessions.
|
|
|
|
|
*/
|
|
|
|
|
export default class SessionAbility extends ModelAbility {
|
|
|
|
|
// =services
|
|
|
|
|
|
|
|
|
|
// =permissions
|
|
|
|
|
|
|
|
|
|
/**
|
2023-11-02 13:42:51 -04:00
|
|
|
* Only available sessions may be read.
|
2023-08-10 15:38:10 -05:00
|
|
|
* @type {boolean}
|
|
|
|
|
*/
|
|
|
|
|
get canRead() {
|
2023-11-01 12:06:40 -04:00
|
|
|
return (
|
2023-11-02 13:42:51 -04:00
|
|
|
this.model.isAvailable &&
|
2023-11-01 12:06:40 -04:00
|
|
|
(this.hasAuthorizedAction('read:self') || super.canRead)
|
|
|
|
|
);
|
2023-08-10 15:38:10 -05:00
|
|
|
}
|
2023-11-02 13:42:51 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Only available sessions may be canceled.
|
|
|
|
|
* @type {boolean}
|
|
|
|
|
*/
|
|
|
|
|
get canCancel() {
|
|
|
|
|
return (
|
|
|
|
|
this.model.isAvailable &&
|
|
|
|
|
(this.hasAuthorizedAction('cancel:self') ||
|
|
|
|
|
this.hasAuthorizedAction('cancel'))
|
|
|
|
|
);
|
|
|
|
|
}
|
2023-08-10 15:38:10 -05:00
|
|
|
}
|