feat(ee): one-click demo account

This commit is contained in:
Ahmed Bouhuolia
2024-08-19 12:08:58 +02:00
parent 25297bc191
commit a008aea3f3
7 changed files with 192 additions and 2 deletions

View File

@@ -0,0 +1,57 @@
import { Inject, Service } from 'typedi';
import { faker } from '@faker-js/faker';
import AuthenticationApplication from '../Authentication/AuthApplication';
import OrganizationService from '../Organization/OrganizationService';
import { IAuthSignInPOJO } from '@/interfaces';
@Service()
export class CreateOneClickDemo {
@Inject()
private authApp: AuthenticationApplication;
@Inject()
private organizationService: OrganizationService;
/**
* Creates one-click demo account.
* @returns {Promise<ICreateOneClickDemoPOJO>}
*/
async createOneClickDemo(): Promise<ICreateOneClickDemoPOJO> {
const firstName = faker.person.firstName();
const lastName = faker.person.lastName();
const email = faker.internet.email();
const password = '123123123';
await this.authApp.signUp({ firstName, lastName, email, password });
//
const signedIn = await this.authApp.signIn(email, password);
const tenantId = signedIn.tenant.id;
const buildJob = await this.organizationService.buildRunJob(
tenantId,
{
name: 'BIGCAPITAL, INC',
base_currency: 'USD',
location: 'US',
language: 'en',
fiscal_year: 'march',
timezone: 'US/Central',
},
signedIn.user
);
return { email, signedIn, buildJob };
}
/**
* Sign-in automicatlly using the demo id one creating an account finish.
* @param {string} oneClickDemoId -
*/
async autoSignIn(oneClickDemoId: string) {}
}
interface ICreateOneClickDemoPOJO {
email: string;
signedIn: IAuthSignInPOJO;
buildJob: any;
}