fix: unauthorized error in organization (#11039)
* fix: unauthorized error in organization Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * chore Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: allow instance admin to update Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> --------- Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
This commit is contained in:
@@ -387,7 +387,7 @@ export const AUTH_OPTIONS: AuthOptions = {
|
||||
if (trigger === "update") {
|
||||
return {
|
||||
...token,
|
||||
locale: session?.locale ?? token.locale,
|
||||
locale: session?.locale ?? token.locale ?? "en",
|
||||
name: session?.name ?? token.name,
|
||||
username: session?.username ?? token.username,
|
||||
email: session?.email ?? token.email,
|
||||
|
||||
@@ -24,11 +24,12 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => {
|
||||
// A user can only have one org so we pass in their currentOrgId here
|
||||
const currentOrgId = ctx.user?.organization?.id || input.orgId;
|
||||
|
||||
if (!currentOrgId || ctx.user.role !== UserPermissionRole.ADMIN)
|
||||
throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
const isUserOrganizationAdmin = currentOrgId && (await isOrganisationAdmin(ctx.user?.id, currentOrgId));
|
||||
const isUserRoleAdmin = ctx.user.role === UserPermissionRole.ADMIN;
|
||||
|
||||
if (!(await isOrganisationAdmin(ctx.user?.id, currentOrgId)) || ctx.user.role !== UserPermissionRole.ADMIN)
|
||||
throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
const isUserAuthorizedToUpdate = !!(isUserOrganizationAdmin || isUserRoleAdmin);
|
||||
|
||||
if (!currentOrgId || !isUserAuthorizedToUpdate) throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
|
||||
if (input.slug) {
|
||||
const userConflict = await prisma.team.findMany({
|
||||
|
||||
Reference in New Issue
Block a user