fix: missing permissions and optional update (#18735)

* fix: missing permissions

* fix: test
This commit is contained in:
Daimolean 2025-05-29 21:48:44 +08:00 committed by GitHub
parent 10181defb1
commit 6f39a706b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 27 additions and 15 deletions

View File

@ -13,11 +13,17 @@ part of openapi.api;
class APIKeyUpdateDto {
/// Returns a new [APIKeyUpdateDto] instance.
APIKeyUpdateDto({
required this.name,
this.name,
this.permissions = const [],
});
String name;
///
/// Please note: This property should have been non-nullable! Since the specification file
/// does not include a default value (using the "default:" property), however, the generated
/// source code must fall back to having a nullable type.
/// Consider adding a "default:" property in the specification file to hide this note.
///
String? name;
List<Permission> permissions;
@ -29,7 +35,7 @@ class APIKeyUpdateDto {
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(name.hashCode) +
(name == null ? 0 : name!.hashCode) +
(permissions.hashCode);
@override
@ -37,7 +43,11 @@ class APIKeyUpdateDto {
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
if (this.name != null) {
json[r'name'] = this.name;
} else {
// json[r'name'] = null;
}
json[r'permissions'] = this.permissions;
return json;
}
@ -51,7 +61,7 @@ class APIKeyUpdateDto {
final json = value.cast<String, dynamic>();
return APIKeyUpdateDto(
name: mapValueOfType<String>(json, r'name')!,
name: mapValueOfType<String>(json, r'name'),
permissions: Permission.listFromJson(json[r'permissions']),
);
}
@ -100,8 +110,6 @@ class APIKeyUpdateDto {
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
'name',
'permissions',
};
}

View File

@ -8335,10 +8335,6 @@
"type": "array"
}
},
"required": [
"name",
"permissions"
],
"type": "object"
},
"ActivityCreateDto": {

View File

@ -415,8 +415,8 @@ export type ApiKeyCreateResponseDto = {
secret: string;
};
export type ApiKeyUpdateDto = {
name: string;
permissions: Permission[];
name?: string;
permissions?: Permission[];
};
export type AssetBulkDeleteDto = {
force?: boolean;

View File

@ -15,14 +15,16 @@ export class APIKeyCreateDto {
}
export class APIKeyUpdateDto {
@Optional()
@IsString()
@IsNotEmpty()
name!: string;
name?: string;
@Optional()
@IsEnum(Permission, { each: true })
@ApiProperty({ enum: Permission, enumName: 'Permission', isArray: true })
@ArrayMinSize(1)
permissions!: Permission[];
permissions?: Permission[];
}
export class APIKeyCreateResponseDto {

View File

@ -110,7 +110,13 @@
Permission.PersonReassign,
]);
permissions.set('session', [Permission.SessionRead, Permission.SessionUpdate, Permission.SessionDelete]);
permissions.set('session', [
Permission.SessionCreate,
Permission.SessionRead,
Permission.SessionUpdate,
Permission.SessionDelete,
Permission.SessionLock,
]);
permissions.set('sharedLink', [
Permission.SharedLinkCreate,