archetecture security fix
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
type EmployeeWithCompany = {
|
||||
id: string
|
||||
email: string
|
||||
firstName: string
|
||||
lastName: string
|
||||
role: string
|
||||
preferredLanguage?: string | null
|
||||
companyId: string
|
||||
company: {
|
||||
name: string
|
||||
slug: string
|
||||
}
|
||||
}
|
||||
|
||||
type CompanySignupResult = {
|
||||
company: {
|
||||
id: string
|
||||
name: string
|
||||
slug: string
|
||||
}
|
||||
trialEndAt: Date
|
||||
emailDelivery?: unknown
|
||||
}
|
||||
|
||||
type RenterProfile = {
|
||||
id: string
|
||||
firstName: string
|
||||
lastName: string
|
||||
email: string
|
||||
phone: string | null
|
||||
preferredLocale: string | null
|
||||
preferredCurrency: string | null
|
||||
emailVerified: boolean
|
||||
savedCompanies: Array<{ companyId: string }>
|
||||
}
|
||||
|
||||
type SavedCompany = {
|
||||
id: string
|
||||
brand: {
|
||||
displayName: string | null
|
||||
subdomain: string | null
|
||||
logoUrl: string | null
|
||||
} | null
|
||||
}
|
||||
|
||||
export function presentEmployeeSession(employee: EmployeeWithCompany, token?: string) {
|
||||
const data = {
|
||||
employee: {
|
||||
id: employee.id,
|
||||
email: employee.email,
|
||||
firstName: employee.firstName,
|
||||
lastName: employee.lastName,
|
||||
role: employee.role,
|
||||
preferredLanguage: employee.preferredLanguage,
|
||||
companyId: employee.companyId,
|
||||
companyName: employee.company.name,
|
||||
companySlug: employee.company.slug,
|
||||
},
|
||||
}
|
||||
|
||||
return token ? { token, ...data } : data
|
||||
}
|
||||
|
||||
export function presentCompanySignup(result: CompanySignupResult) {
|
||||
return {
|
||||
companyId: result.company.id,
|
||||
companyName: result.company.name,
|
||||
slug: result.company.slug,
|
||||
invitationId: null,
|
||||
trialEndsAt: result.trialEndAt.toISOString(),
|
||||
nextStep: 'workspace_created',
|
||||
emailDelivery: result.emailDelivery ?? { attempted: false, success: false, error: null },
|
||||
}
|
||||
}
|
||||
|
||||
export function presentRenterProfile(renter: RenterProfile, companies: SavedCompany[]) {
|
||||
const companyMap = new Map(companies.map((company) => [company.id, company]))
|
||||
|
||||
return {
|
||||
...renter,
|
||||
savedCompanies: renter.savedCompanies.map((savedCompany) => ({
|
||||
id: savedCompany.companyId,
|
||||
brand: companyMap.get(savedCompany.companyId)?.brand ?? null,
|
||||
})),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user