multi tenancy stuff
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
import { resolver, SecurePassword, AuthenticationError } from "blitz";
|
||||
|
||||
import db, { Role } from "../../../db";
|
||||
import db, { GlobalRole } from "../../../db";
|
||||
import { Login } from "../validations";
|
||||
|
||||
export const authenticateUser = async (rawEmail: string, rawPassword: string) => {
|
||||
@ -25,7 +25,13 @@ export default resolver.pipe(resolver.zod(Login), async ({ email, password }, ct
|
||||
// This throws an error if credentials are invalid
|
||||
const user = await authenticateUser(email, password);
|
||||
|
||||
await ctx.session.$create({ userId: user.id, role: user.role as Role });
|
||||
const hasCompletedOnboarding = undefined; // TODO
|
||||
await ctx.session.$create({
|
||||
userId: user.id,
|
||||
roles: [user.role],
|
||||
hasCompletedOnboarding,
|
||||
orgId: "user.memberships[0].organizationId",
|
||||
});
|
||||
|
||||
return user;
|
||||
});
|
||||
|
@ -1,18 +1,35 @@
|
||||
import { resolver, SecurePassword } from "blitz";
|
||||
|
||||
import db, { Role } from "../../../db";
|
||||
import db, { GlobalRole, MembershipRole } from "../../../db";
|
||||
import { Signup } from "../validations";
|
||||
import { computeEncryptionKey } from "../../../db/_encryption";
|
||||
|
||||
export default resolver.pipe(resolver.zod(Signup), async ({ email, password }, ctx) => {
|
||||
const hashedPassword = await SecurePassword.hash(password.trim());
|
||||
const encryptionKey = computeEncryptionKey(email.toLowerCase().trim()).toString("hex");
|
||||
const user = await db.user.create({
|
||||
data: { email: email.toLowerCase().trim(), hashedPassword, role: Role.USER },
|
||||
select: { id: true, name: true, email: true, role: true },
|
||||
data: {
|
||||
email: email.toLowerCase().trim(),
|
||||
hashedPassword,
|
||||
role: GlobalRole.CUSTOMER,
|
||||
memberships: {
|
||||
create: {
|
||||
role: MembershipRole.OWNER,
|
||||
organization: {
|
||||
create: {
|
||||
encryptionKey,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
include: { memberships: true },
|
||||
});
|
||||
const encryptionKey = computeEncryptionKey(user.id).toString("hex");
|
||||
await db.customer.create({ data: { id: user.id, encryptionKey } });
|
||||
|
||||
await ctx.session.$create({ userId: user.id, role: user.role });
|
||||
await ctx.session.$create({
|
||||
userId: user.id,
|
||||
roles: [user.role, user.memberships[0]!.role],
|
||||
orgId: user.memberships[0]!.organizationId,
|
||||
});
|
||||
return user;
|
||||
});
|
||||
|
Reference in New Issue
Block a user