* refactor: allow non unique PlatformBilling customerId * feat: add PlatformBilling managed organizations fields * feat: ManagedOrganization table * refactor: bill overdue based on teamId * refactor: restructure organizations module * wip: organizations endpoints * Revert "wip: organizations endpoints" This reverts commit 0e9e66fc74f31da436f12930c1b6597c650ed621. * refactor: unique index for managed organizations * wip: organizations endpoints * wip: create managed organization * remove unecessary membership check because we have guard * feat: create managed org * feat: get managed org and orgs * feat: update and delete managed orgs * wip: api key logic * feat: allow variable api key length * feat: refresh managed org api key * feat: create managed org OAuth clients using api key * finish merge main * chore: bump platform libraries * tests: fix and add more tests to api-auth.strategy.e2e * refactor: dont request managed org slug and handle metadata as object * revert: billing service and repository update overdue based on sub and customer ids * refactor: v2 OAuth client permissions (#19501) * refactor: v2 permissions as string array * refactor: frontend work with permissions as string * tests: test '*' permissions * fix:managed org creator have profile & test can fetch oauth client * fix: tests * fix: OAuthClientCard on frontend * fix: tests
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { BaseStrategy } from "@/lib/passport/strategies/types";
|
|
import { ApiAuthGuardRequest } from "@/modules/auth/strategies/api-auth/api-auth.strategy";
|
|
import { UsersService } from "@/modules/users/services/users.service";
|
|
import { UsersRepository } from "@/modules/users/users.repository";
|
|
import { Injectable } from "@nestjs/common";
|
|
import { PassportStrategy } from "@nestjs/passport";
|
|
|
|
@Injectable()
|
|
export class ApiAuthMockStrategy extends PassportStrategy(BaseStrategy, "api-auth") {
|
|
constructor(
|
|
private readonly email: string,
|
|
private readonly usersRepository: UsersRepository,
|
|
private readonly usersService: UsersService
|
|
) {
|
|
super();
|
|
}
|
|
|
|
async authenticate(request: ApiAuthGuardRequest) {
|
|
try {
|
|
const user = await this.usersRepository.findByEmailWithProfile(this.email);
|
|
if (!user) {
|
|
throw new Error("User with the provided ID not found");
|
|
}
|
|
|
|
const organizationId = this.usersService.getUserMainOrgId(user) as number;
|
|
request.organizationId = organizationId;
|
|
|
|
return this.success(user);
|
|
} catch (error) {
|
|
console.error(error);
|
|
if (error instanceof Error) return this.error(error);
|
|
}
|
|
}
|
|
}
|