Josh 22f3123e94
refactor(admin): add auth provider & move to use redux-toolkit-query (#19062)
* feat(admin): add Auth feature

* refactor: authentication to use redux-toolkit

* chore(admin): convert admin data-fetching to use redux-toolkit-query

* chore: add docs

* fix: default logo would not show on login page

* fix: app flashes on logout

* fix: logout should work across browsers
2024-01-02 17:01:58 +00:00

149 lines
3.2 KiB
TypeScript

import { Entity, EntityService } from '@strapi/types';
import type { errors } from '@strapi/utils';
import { AdminRole, Permission, SanitizedAdminRole } from './shared';
export type SanitizedPermission = Pick<
Permission,
'id' | 'action' | 'actionParameters' | 'subject' | 'properties' | 'conditions'
>;
type SanitizedAdminRoleWithUsersCount = SanitizedAdminRole & { usersCount?: number };
/**
* GET /roles/:id/permissions - Get the permissions of a role
*/
export declare namespace GetPermissions {
export interface Request {
params: { id: string };
query: {};
body: {};
}
export interface Response {
data: Permission[];
error?: errors.ApplicationError | errors.NotFoundError;
}
}
/**
* PUT /roles/:id/permissions - Update the permissions of a role
*/
export declare namespace UpdatePermissions {
export interface Request {
params: { id: Entity.ID };
query: {};
body: {
permissions: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];
};
}
export interface Response {
data: SanitizedPermission[];
error?:
| errors.ApplicationError
| errors.NotFoundError // One of the permissions not found
| errors.YupValidationError;
}
}
/**
* GET /roles/:id - Find a role by ID
*/
export declare namespace FindRole {
export interface Request {
params: { id: string };
query: {};
body: {};
}
export interface Response {
data: SanitizedAdminRoleWithUsersCount;
error?: errors.ApplicationError | errors.NotFoundError;
}
}
/**
* GET /roles
*/
export declare namespace FindRoles {
export interface Request {
query: EntityService.Params.Pick<'admin::role', 'sort' | 'filters' | 'fields'>;
body: {};
}
export interface Response {
data: SanitizedAdminRoleWithUsersCount[];
error?: errors.ApplicationError | errors.ValidationError;
}
}
/**
* POST /roles - Create a role
*/
export declare namespace Create {
export interface Request {
query: {};
body: {
name: string;
description?: string;
};
}
export interface Response {
data: SanitizedAdminRole;
error?: errors.ApplicationError | errors.YupValidationError;
}
}
/**
* PUT /roles/:id - Update a role
*/
export declare namespace Update {
export interface Request {
params: { id: string };
query: {};
body: {
name?: string;
description?: string;
};
}
export interface Response {
data: SanitizedAdminRole;
error?: errors.ApplicationError | errors.NotFoundError;
}
}
/**
* DELETE /roles/:id - Delete a role
*/
export declare namespace Delete {
export interface Request {
params: { id: string };
query: {};
body: {};
}
export interface Response {
data: Omit<AdminRole, 'users' | 'permissions'> | null;
error?: errors.ApplicationError;
}
}
/**
* POST /roles/batch-delete - Delete multiple roles
*/
export declare namespace BatchDelete {
export interface Request {
query: {};
body: {
ids: string[]; // Min length: 1
};
}
export interface Response {
data: (Omit<AdminRole, 'users' | 'permissions'> | null)[];
error?: errors.ApplicationError | errors.YupValidationError;
}
}