forked from baron/baron-sso
개발자 권한을 페이지별로 선택/부여 가능하도록 개선
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
import type { DeveloperRequestStatus } from "../../lib/devApi";
|
||||
import type { DeveloperAccessStatus } from "../../lib/devApi";
|
||||
import {
|
||||
hasDeveloperAccessForPages,
|
||||
isDeveloperRequestPendingForPages,
|
||||
} from "../developer-access/developerAccessPages";
|
||||
|
||||
export type ClientCreateAccessState =
|
||||
| "can_create"
|
||||
@@ -8,7 +12,7 @@ export type ClientCreateAccessState =
|
||||
|
||||
type ResolveClientCreateAccessParams = {
|
||||
role: string;
|
||||
requestStatus?: DeveloperRequestStatus;
|
||||
accessStatus?: DeveloperAccessStatus;
|
||||
};
|
||||
|
||||
function canSelfRequestDeveloperAccess(role: string) {
|
||||
@@ -17,7 +21,7 @@ function canSelfRequestDeveloperAccess(role: string) {
|
||||
|
||||
export function resolveClientCreateAccess({
|
||||
role,
|
||||
requestStatus,
|
||||
accessStatus,
|
||||
}: ResolveClientCreateAccessParams): ClientCreateAccessState {
|
||||
if (!role.trim()) {
|
||||
return "request_required";
|
||||
@@ -27,22 +31,17 @@ export function resolveClientCreateAccess({
|
||||
return "can_create";
|
||||
}
|
||||
|
||||
if (requestStatus === "approved") {
|
||||
if (hasDeveloperAccessForPages(accessStatus?.approvedPages, ["client_create"])) {
|
||||
return "can_create";
|
||||
}
|
||||
|
||||
if (requestStatus === "pending") {
|
||||
if (
|
||||
isDeveloperRequestPendingForPages(accessStatus?.pendingPages, [
|
||||
"client_create",
|
||||
])
|
||||
) {
|
||||
return "pending";
|
||||
}
|
||||
|
||||
if (
|
||||
requestStatus === "none" ||
|
||||
requestStatus === "rejected" ||
|
||||
requestStatus === "cancelled" ||
|
||||
typeof requestStatus === "undefined"
|
||||
) {
|
||||
return "request_required";
|
||||
}
|
||||
|
||||
return "forbidden";
|
||||
return "request_required";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user