fix: link social, admin delete account,update

This commit is contained in:
Théo LAGACHE
2026-02-25 09:58:15 +01:00
parent b9ef58044e
commit 31285dd0d6
11 changed files with 928 additions and 857 deletions
+1 -13
View File
@@ -134,7 +134,7 @@ export const auth = betterAuth({
trustedProviders: [
"credential",
...getOAuthProviders().map((p) => p.id),
...oidcProviders.map((p) => p.id),
...oidcProviders.map((p) => p.id)
],
allowDifferentEmails: true,
},
@@ -338,18 +338,6 @@ export const auth = betterAuth({
}
},
},
delete: {
before: async (account) => {
const provider = SUPPORTED_PROVIDERS.find(
(p) => p.id === account.providerId,
);
if (provider && provider.allowUnlinking === false) {
throw new APIError("FORBIDDEN", {
message: "Unlinking is disabled for this provider.",
});
}
},
},
},
user: {
update: {
+2 -1
View File
@@ -85,7 +85,8 @@ export function getOAuthProviders(): OAuthProvider[] {
const client = process.env[`AUTH_SOCIAL_${prefix}_CLIENT`];
if (!client) return;
const providerId = prefix.toLowerCase();
const providerId =
prefix.toLowerCase() === "x" ? "twitter" : prefix.toLowerCase();
const envTitle = process.env[`AUTH_SOCIAL_${prefix}_TITLE`];
const envDesc = process.env[`AUTH_SOCIAL_${prefix}_DESC`];
+42 -46
View File
@@ -1,76 +1,72 @@
import {createAccessControl} from "better-auth/plugins/access";
import {defaultStatements, adminAc} from "better-auth/plugins/admin/access";
import { createAccessControl } from "better-auth/plugins/access";
import { defaultStatements, adminAc } from "better-auth/plugins/admin/access";
import {
defaultStatements as orgDefaultStatements,
adminAc as orgAdminAc,
ownerAc as orgOwnerAc,
memberAc as orgMemberAc
defaultStatements as orgDefaultStatements,
adminAc as orgAdminAc,
ownerAc as orgOwnerAc,
memberAc as orgMemberAc,
} from "better-auth/plugins/organization/access";
const statement = {
...defaultStatements,
...orgDefaultStatements,
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete", "backup"],
agent: ["create", "list", "update", "delete"],
...defaultStatements,
...orgDefaultStatements,
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete", "backup"],
agent: ["create", "list", "update", "delete"],
} as const;
const ac = createAccessControl(statement);
const superadmin = ac.newRole({
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
...orgMemberAc.statements,
...orgAdminAc.statements,
...orgOwnerAc.statements,
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
...orgMemberAc.statements,
...orgAdminAc.statements,
...orgOwnerAc.statements,
});
const admin = ac.newRole({
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
...orgMemberAc.statements,
...orgAdminAc.statements,
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
...orgMemberAc.statements,
...orgAdminAc.statements,
});
const user = ac.newRole({
project: [],
database: [],
agent: [],
project: [],
database: [],
agent: [],
});
const pending = ac.newRole({
project: [],
database: [],
agent: [],
project: [],
database: [],
agent: [],
});
//org
const orgMember = ac.newRole({
project: ["list"],
database: ["list"],
agent: ["list"],
...orgMemberAc.statements,
project: ["list"],
database: ["list"],
agent: ["list"],
...orgMemberAc.statements,
});
const orgAdmin = ac.newRole({
project: ["create", "update"],
...orgMemberAc.statements,
...orgAdminAc.statements,
project: ["create", "update"],
...orgMemberAc.statements,
...orgAdminAc.statements,
});
const orgOwner = ac.newRole({
project: ["create", "update", "delete"],
...orgMemberAc.statements,
...orgAdminAc.statements,
...orgOwnerAc.statements,
project: ["create", "update", "delete"],
...orgMemberAc.statements,
...orgAdminAc.statements,
...orgOwnerAc.statements,
});
export {ac, admin, superadmin, user, pending, orgAdmin, orgMember, orgOwner};
export { ac, admin, superadmin, user, pending, orgAdmin, orgMember, orgOwner };