mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 23:00:34 +00:00
Compare commits
2 Commits
attachment
...
all-contri
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22d1e4df89 | ||
|
|
0e72ca4b4a |
@@ -1,24 +0,0 @@
|
|||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4846,"time":"2024-05-15T09:09:09.492Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4846,"time":"2024-05-15T09:09:09.514Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4846,"time":"2024-05-15T09:09:09.791Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4846,"time":"2024-05-15T09:09:09.793Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4883,"time":"2024-05-15T09:09:27.758Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4883,"time":"2024-05-15T09:09:27.771Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4883,"time":"2024-05-15T09:09:27.927Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":4883,"time":"2024-05-15T09:09:27.929Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":5411,"time":"2024-05-15T09:15:10.318Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":5411,"time":"2024-05-15T09:15:10.326Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":5411,"time":"2024-05-15T09:15:10.420Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":5411,"time":"2024-05-15T09:15:10.421Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":8856,"time":"2024-05-15T11:47:03.324Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":8856,"time":"2024-05-15T11:47:03.335Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":8856,"time":"2024-05-15T11:47:03.504Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":8856,"time":"2024-05-15T11:47:03.505Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":12076,"time":"2024-05-15T14:30:36.984Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":12076,"time":"2024-05-15T14:30:36.990Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":12076,"time":"2024-05-15T14:30:37.126Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":12076,"time":"2024-05-15T14:30:37.127Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":29079,"time":"2024-05-17T10:24:22.393Z","msg":"Unable to find configuration file. If a configuration file is desired (common for non-containerized environments), a base configuration file can be copied from /Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/newrelic.js and renamed to \"newrelic.js\" in the directory from which you will start your application. Attempting to start agent using environment variables."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":29079,"time":"2024-05-17T10:24:22.405Z","msg":"Using New Relic for Node.js. Agent version: 11.16.0; Node version: v18.18.2."}
|
|
||||||
{"v":0,"level":30,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":29079,"time":"2024-05-17T10:24:22.536Z","msg":"Using AsyncLocalContextManager"}
|
|
||||||
{"v":0,"level":50,"name":"newrelic","hostname":"Ahmeds-MacBook-Air.local","pid":29079,"time":"2024-05-17T10:24:22.537Z","msg":"New Relic for Node.js was unable to bootstrap itself due to an error:","stack":"Error: New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!\n at createAgent (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:160:11)\n at initialize (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:105:15)\n at Object.<anonymous> (/Users/ahmedbouhuolia/repos/bigcapital/node_modules/.pnpm/newrelic@11.16.0/node_modules/newrelic/index.js:39:3)\n at Module._compile (node:internal/modules/cjs/loader:1256:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)\n at Module.load (node:internal/modules/cjs/loader:1119:32)\n at Module._load (node:internal/modules/cjs/loader:960:12)\n at Module.require (node:internal/modules/cjs/loader:1143:19)\n at require (node:internal/modules/cjs/helpers:119:18)\n at Object.newrelic (/Users/ahmedbouhuolia/repos/bigcapital/packages/server/build/index.js:15954:18)","message":"New Relic requires that you name this application!\nSet app_name in your newrelic.js or newrelic.cjs file or set environment variable\nNEW_RELIC_APP_NAME. Not starting!"}
|
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
"bigcapital": "./bin/bigcapital.js"
|
"bigcapital": "./bin/bigcapital.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.576.0",
|
|
||||||
"@casl/ability": "^5.4.3",
|
"@casl/ability": "^5.4.3",
|
||||||
"@hapi/boom": "^7.4.3",
|
"@hapi/boom": "^7.4.3",
|
||||||
"@lemonsqueezy/lemonsqueezy.js": "^2.2.0",
|
"@lemonsqueezy/lemonsqueezy.js": "^2.2.0",
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
import { Service, Inject } from 'typedi';
|
|
||||||
import { Router, Response } from 'express';
|
|
||||||
import BaseController from '@/api/controllers/BaseController';
|
|
||||||
import { Request } from 'express-validator/src/base';
|
|
||||||
import { AttachmentsApplication } from '@/services/Attachments/AttachmentsApplication';
|
|
||||||
|
|
||||||
@Service()
|
|
||||||
export class AttachmentsController extends BaseController {
|
|
||||||
@Inject()
|
|
||||||
private attachmentsApplication: AttachmentsApplication;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Router constructor.
|
|
||||||
*/
|
|
||||||
router() {
|
|
||||||
const router = Router();
|
|
||||||
|
|
||||||
router.delete('/:id', this.deleteAttachment.bind(this));
|
|
||||||
router.post('/', this.uploadAttachment.bind(this));
|
|
||||||
|
|
||||||
return router;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async uploadAttachment(req: Request, res: Response, next: Function) {
|
|
||||||
try {
|
|
||||||
await this.attachmentsApplication.upload();
|
|
||||||
|
|
||||||
return res.status(200).send({});
|
|
||||||
} catch (error) {
|
|
||||||
next(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private deleteAttachment(req: Request, res: Response, next: Function) {}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { Inject, Service } from "typedi";
|
|
||||||
import { UploadDocument } from "./UploadDocument";
|
|
||||||
|
|
||||||
|
|
||||||
@Service()
|
|
||||||
export class AttachmentsApplication {
|
|
||||||
|
|
||||||
@Inject()
|
|
||||||
private uploadDocumentService: UploadDocument;
|
|
||||||
|
|
||||||
upload(data: any) {
|
|
||||||
return this.uploadDocumentService.upload(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
delete(attachmentId: string) {}
|
|
||||||
|
|
||||||
get(attachmentId: string) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import { Service } from 'typedi';
|
|
||||||
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
|
|
||||||
|
|
||||||
@Service()
|
|
||||||
export class UploadDocument {
|
|
||||||
// setting up s3 client
|
|
||||||
public s3 = new S3Client({
|
|
||||||
region: process.env.AWS_REGION,
|
|
||||||
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
||||||
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
|
||||||
});
|
|
||||||
|
|
||||||
async upload(data) {
|
|
||||||
const putObjectCommand = new PutObjectCommand({
|
|
||||||
Bucket: process.env.AWS_BUCKET,
|
|
||||||
Key: data.filename,
|
|
||||||
Body: await data.toBuffer(),
|
|
||||||
ContentType: data.mimetype,
|
|
||||||
});
|
|
||||||
await this.s3.send(putObjectCommand);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,11 +9,7 @@ import AuthInsider from '@/containers/Authentication/AuthInsider';
|
|||||||
import { useAuthLogin, useAuthRegister } from '@/hooks/query/authentication';
|
import { useAuthLogin, useAuthRegister } from '@/hooks/query/authentication';
|
||||||
|
|
||||||
import RegisterForm from './RegisterForm';
|
import RegisterForm from './RegisterForm';
|
||||||
import {
|
import { RegisterSchema, transformRegisterErrorsToForm, transformRegisterToastMessages } from './utils';
|
||||||
RegisterSchema,
|
|
||||||
transformRegisterErrorsToForm,
|
|
||||||
transformRegisterToastMessages,
|
|
||||||
} from './utils';
|
|
||||||
import {
|
import {
|
||||||
AuthFooterLinks,
|
AuthFooterLinks,
|
||||||
AuthFooterLink,
|
AuthFooterLink,
|
||||||
@@ -36,7 +32,7 @@ export default function RegisterUserForm() {
|
|||||||
|
|
||||||
const handleSubmit = (values, { setSubmitting, setErrors }) => {
|
const handleSubmit = (values, { setSubmitting, setErrors }) => {
|
||||||
authRegisterMutate(values)
|
authRegisterMutate(values)
|
||||||
.then(() => {
|
.then((response) => {
|
||||||
authLoginMutate({
|
authLoginMutate({
|
||||||
crediential: values.email,
|
crediential: values.email,
|
||||||
password: values.password,
|
password: values.password,
|
||||||
@@ -91,10 +87,7 @@ function RegisterFooterLinks() {
|
|||||||
return (
|
return (
|
||||||
<AuthFooterLinks>
|
<AuthFooterLinks>
|
||||||
<AuthFooterLink>
|
<AuthFooterLink>
|
||||||
<T id={'return_to'} />{' '}
|
<T id={'return_to'} /> <Link to={'/auth/login'}><T id={'sign_in'} /></Link>
|
||||||
<Link to={'/auth/login'}>
|
|
||||||
<T id={'sign_in'} />
|
|
||||||
</Link>
|
|
||||||
</AuthFooterLink>
|
</AuthFooterLink>
|
||||||
|
|
||||||
<AuthFooterLink>
|
<AuthFooterLink>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import AuthInsider from './AuthInsider';
|
|||||||
import { AuthInsiderCard } from './_components';
|
import { AuthInsiderCard } from './_components';
|
||||||
import styles from './RegisterVerify.module.scss';
|
import styles from './RegisterVerify.module.scss';
|
||||||
import { AppToaster, Stack } from '@/components';
|
import { AppToaster, Stack } from '@/components';
|
||||||
import { useAuthActions, useAuthUserVerifyEmail } from '@/hooks/state';
|
import { useAuthActions } from '@/hooks/state';
|
||||||
import { useAuthSignUpVerifyResendMail } from '@/hooks/query';
|
import { useAuthSignUpVerifyResendMail } from '@/hooks/query';
|
||||||
import { AuthContainer } from './AuthContainer';
|
import { AuthContainer } from './AuthContainer';
|
||||||
|
|
||||||
@@ -13,8 +13,6 @@ export default function RegisterVerify() {
|
|||||||
const { mutateAsync: resendSignUpVerifyMail, isLoading } =
|
const { mutateAsync: resendSignUpVerifyMail, isLoading } =
|
||||||
useAuthSignUpVerifyResendMail();
|
useAuthSignUpVerifyResendMail();
|
||||||
|
|
||||||
const emailAddress = useAuthUserVerifyEmail();
|
|
||||||
|
|
||||||
const handleResendMailBtnClick = () => {
|
const handleResendMailBtnClick = () => {
|
||||||
resendSignUpVerifyMail()
|
resendSignUpVerifyMail()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -40,8 +38,8 @@ export default function RegisterVerify() {
|
|||||||
<AuthInsiderCard className={styles.root}>
|
<AuthInsiderCard className={styles.root}>
|
||||||
<h2 className={styles.title}>Please verify your email</h2>
|
<h2 className={styles.title}>Please verify your email</h2>
|
||||||
<p className={styles.description}>
|
<p className={styles.description}>
|
||||||
We sent an email to <strong>{emailAddress}</strong> Click the link
|
We sent an email to <strong>asdahmed@gmail.com</strong> Click the
|
||||||
inside to get started.
|
link inside to get started.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<Stack spacing={4}>
|
<Stack spacing={4}>
|
||||||
|
|||||||
@@ -1,17 +1,9 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
import { useMutation } from 'react-query';
|
import { useMutation } from 'react-query';
|
||||||
import { batch } from 'react-redux';
|
|
||||||
import useApiRequest from '../useRequest';
|
import useApiRequest from '../useRequest';
|
||||||
import { setCookie } from '../../utils';
|
import { setCookie } from '../../utils';
|
||||||
import { useRequestQuery } from '../useQueryRequest';
|
import { useRequestQuery } from '../useQueryRequest';
|
||||||
import t from './types';
|
import t from './types';
|
||||||
import {
|
|
||||||
useSetAuthToken,
|
|
||||||
useSetAuthUserId,
|
|
||||||
useSetLocale,
|
|
||||||
useSetOrganizationId,
|
|
||||||
useSetTenantId,
|
|
||||||
} from '../state';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves the response data to cookies.
|
* Saves the response data to cookies.
|
||||||
@@ -32,30 +24,14 @@ function setAuthLoginCookies(data) {
|
|||||||
export const useAuthLogin = (props) => {
|
export const useAuthLogin = (props) => {
|
||||||
const apiRequest = useApiRequest();
|
const apiRequest = useApiRequest();
|
||||||
|
|
||||||
const setAuthToken = useSetAuthToken();
|
|
||||||
const setOrganizationId = useSetOrganizationId();
|
|
||||||
const setUserId = useSetAuthUserId();
|
|
||||||
const setTenantId = useSetTenantId();
|
|
||||||
const setLocale = useSetLocale();
|
|
||||||
|
|
||||||
return useMutation((values) => apiRequest.post('auth/login', values), {
|
return useMutation((values) => apiRequest.post('auth/login', values), {
|
||||||
select: (res) => res.data,
|
select: (res) => res.data,
|
||||||
onSuccess: (res) => {
|
onSuccess: (data) => {
|
||||||
// Set authentication cookies.
|
// Set authentication cookies.
|
||||||
setAuthLoginCookies(res.data);
|
setAuthLoginCookies(data.data);
|
||||||
|
|
||||||
batch(() => {
|
// Reboot the application.
|
||||||
// Sets the auth metadata to global state.
|
window.location.reload();
|
||||||
setAuthToken(res.data.token);
|
|
||||||
setOrganizationId(res.data.tenant.organization_id);
|
|
||||||
setUserId(res.data.user.id);
|
|
||||||
setTenantId(res.data.tenant.id);
|
|
||||||
|
|
||||||
if (res.data?.tenant?.metadata?.language) {
|
|
||||||
setLocale(res.data?.tenant?.metadata?.language);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
props?.onSuccess && props?.onSuccess(...args);
|
|
||||||
},
|
},
|
||||||
...props,
|
...props,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useMutation, useQueryClient } from 'react-query';
|
import { useMutation, useQueryClient } from 'react-query';
|
||||||
import { useRequestQuery } from '../useQueryRequest';
|
import { useQueryTenant, useRequestQuery } from '../useQueryRequest';
|
||||||
import useApiRequest from '../useRequest';
|
import useApiRequest from '../useRequest';
|
||||||
import { useSetFeatureDashboardMeta } from '../state/feature';
|
import { useSetFeatureDashboardMeta } from '../state/feature';
|
||||||
import t from './types';
|
import t from './types';
|
||||||
@@ -143,7 +143,7 @@ export function useAuthenticatedAccount(props) {
|
|||||||
select: (response) => response.data.data,
|
select: (response) => response.data.data,
|
||||||
defaultData: {},
|
defaultData: {},
|
||||||
onSuccess: (data) => {
|
onSuccess: (data) => {
|
||||||
setEmailConfirmed(data.is_verified, data.email);
|
setEmailConfirmed(data.is_verified);
|
||||||
},
|
},
|
||||||
...props,
|
...props,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,13 +3,8 @@ import { useDispatch, useSelector } from 'react-redux';
|
|||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { isAuthenticated } from '@/store/authentication/authentication.reducer';
|
import { isAuthenticated } from '@/store/authentication/authentication.reducer';
|
||||||
import {
|
import {
|
||||||
setAuthTenantId,
|
|
||||||
setAuthToken,
|
|
||||||
setAuthUserId,
|
|
||||||
setEmailConfirmed,
|
setEmailConfirmed,
|
||||||
setLogin,
|
setLogin,
|
||||||
setOrganizationId,
|
|
||||||
setLocale,
|
|
||||||
} from '@/store/authentication/authentication.actions';
|
} from '@/store/authentication/authentication.actions';
|
||||||
import { useQueryClient } from 'react-query';
|
import { useQueryClient } from 'react-query';
|
||||||
import { removeCookie } from '@/utils';
|
import { removeCookie } from '@/utils';
|
||||||
@@ -80,14 +75,6 @@ export const useAuthUserVerified = () => {
|
|||||||
return useSelector((state) => state.authentication.verified);
|
return useSelector((state) => state.authentication.verified);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the user's email address.
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
export const useAuthUserVerifyEmail = () => {
|
|
||||||
return useSelector((state) => state.authentication.verifyEmail);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the user's email verification status.
|
* Sets the user's email verification status.
|
||||||
*/
|
*/
|
||||||
@@ -95,53 +82,7 @@ export const useSetAuthEmailConfirmed = () => {
|
|||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
return useCallback(
|
return useCallback(
|
||||||
(verified?: boolean = true, email: string) =>
|
(verified?: boolean = true) => dispatch(setEmailConfirmed(verified)),
|
||||||
dispatch(setEmailConfirmed(verified, email)),
|
|
||||||
[dispatch],
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSetOrganizationId = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
return useCallback(
|
|
||||||
(organizationId: string) => dispatch(setOrganizationId(organizationId)),
|
|
||||||
[dispatch],
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSetAuthToken = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
return useCallback(
|
|
||||||
(authToken: string) => dispatch(setAuthToken(authToken)),
|
|
||||||
[dispatch],
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSetTenantId = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
return useCallback(
|
|
||||||
(tenantId: string) => dispatch(setAuthTenantId(tenantId)),
|
|
||||||
[dispatch],
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSetAuthUserId = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
return useCallback(
|
|
||||||
(userId: string) => dispatch(setAuthUserId(userId)),
|
|
||||||
[dispatch],
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSetLocale = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
return useCallback(
|
|
||||||
(locale: string) => dispatch(setLocale(locale)),
|
|
||||||
[dispatch],
|
[dispatch],
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,27 +4,7 @@ import t from '@/store/types';
|
|||||||
export const setLogin = () => ({ type: t.LOGIN_SUCCESS });
|
export const setLogin = () => ({ type: t.LOGIN_SUCCESS });
|
||||||
export const setLogout = () => ({ type: t.LOGOUT });
|
export const setLogout = () => ({ type: t.LOGOUT });
|
||||||
export const setStoreReset = () => ({ type: t.RESET });
|
export const setStoreReset = () => ({ type: t.RESET });
|
||||||
export const setEmailConfirmed = (verified?: boolean, email?: string) => ({
|
export const setEmailConfirmed = (verified?: boolean) => ({
|
||||||
type: t.SET_EMAIL_VERIFIED,
|
type: t.SET_EMAIL_VERIFIED,
|
||||||
action: { verified, email },
|
action: { verified },
|
||||||
});
|
|
||||||
export const setOrganizationId = (organizationId: string) => ({
|
|
||||||
type: t.SET_ORGANIZATIOIN_ID,
|
|
||||||
action: { organizationId },
|
|
||||||
});
|
|
||||||
export const setAuthToken = (token: string) => ({
|
|
||||||
type: t.SET_AUTH_TOKEN,
|
|
||||||
action: { token },
|
|
||||||
});
|
|
||||||
export const setAuthTenantId = (tenantId: string) => ({
|
|
||||||
type: t.SET_TENANT_ID,
|
|
||||||
action: { tenantId },
|
|
||||||
});
|
|
||||||
export const setAuthUserId = (userId: string) => ({
|
|
||||||
type: t.SET_USER_ID,
|
|
||||||
action: { userId },
|
|
||||||
});
|
|
||||||
export const setLocale = (locale: string) => ({
|
|
||||||
type: t.SET_LOCALE,
|
|
||||||
action: { locale },
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,13 +9,12 @@ import t from '@/store/types';
|
|||||||
|
|
||||||
// Read stored data in cookies and merge it with the initial state.
|
// Read stored data in cookies and merge it with the initial state.
|
||||||
const initialState = {
|
const initialState = {
|
||||||
token: getCookie('token') || null,
|
token: getCookie('token'),
|
||||||
organizationId: getCookie('organization_id') || null,
|
organizationId: getCookie('organization_id'),
|
||||||
tenantId: getCookie('tenant_id') || null,
|
tenantId: getCookie('tenant_id'),
|
||||||
userId: getCookie('authenticated_user_id') || null,
|
userId: getCookie('authenticated_user_id'),
|
||||||
locale: getCookie('locale') || 'en',
|
locale: getCookie('locale'),
|
||||||
verified: true, // Let's be optimistic and assume the user's email is confirmed.
|
verified: true, // Let's be optimistic and assume the user's email is confirmed.
|
||||||
verifyEmail: null,
|
|
||||||
errors: [],
|
errors: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -37,35 +36,11 @@ const reducerInstance = createReducer(initialState, {
|
|||||||
|
|
||||||
[t.SET_EMAIL_VERIFIED]: (
|
[t.SET_EMAIL_VERIFIED]: (
|
||||||
state,
|
state,
|
||||||
payload: PayloadAction<{ verified?: boolean; email?: string }>,
|
payload: PayloadAction<{ verified?: boolean }>,
|
||||||
) => {
|
) => {
|
||||||
state.verified = !isUndefined(payload.action.verified)
|
state.verified = !isUndefined(payload.action.verified)
|
||||||
? payload.action.verified
|
? payload.action.verified
|
||||||
: true;
|
: true;
|
||||||
state.verifyEmail = payload.action.email || null;
|
|
||||||
|
|
||||||
if (state.verified) {
|
|
||||||
state.verifyEmail = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
[t.SET_AUTH_TOKEN]: (state, payload: PayloadAction<{ token: string }>) => {
|
|
||||||
state.token = payload.action.token;
|
|
||||||
},
|
|
||||||
|
|
||||||
[t.SET_ORGANIZATIOIN_ID]: (
|
|
||||||
state,
|
|
||||||
payload: PayloadAction<{ organizationId: string }>,
|
|
||||||
) => {
|
|
||||||
state.organizationId = payload.action.organizationId;
|
|
||||||
},
|
|
||||||
|
|
||||||
[t.SET_TENANT_ID]: (state, payload: PayloadAction<{ tenantId: string }>) => {
|
|
||||||
state.tenantId = payload.action.tenantId;
|
|
||||||
},
|
|
||||||
|
|
||||||
[t.SET_USER_ID]: (state, payload: PayloadAction<{ userId: string }>) => {
|
|
||||||
state.userId = payload.action.userId;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
[t.RESET]: (state) => {
|
[t.RESET]: (state) => {
|
||||||
|
|||||||
@@ -7,10 +7,5 @@ export default {
|
|||||||
LOGOUT: 'LOGOUT',
|
LOGOUT: 'LOGOUT',
|
||||||
LOGIN_CLEAR_ERRORS: 'LOGIN_CLEAR_ERRORS',
|
LOGIN_CLEAR_ERRORS: 'LOGIN_CLEAR_ERRORS',
|
||||||
RESET: 'RESET',
|
RESET: 'RESET',
|
||||||
SET_EMAIL_VERIFIED: 'SET_EMAIL_VERIFIED',
|
SET_EMAIL_VERIFIED: 'SET_EMAIL_VERIFIED'
|
||||||
SET_AUTH_TOKEN: 'SET_AUTH_TOKEN',
|
|
||||||
SET_ORGANIZATIOIN_ID: 'SET_ORGANIZATIOIN_ID',
|
|
||||||
SET_TENANT_ID: 'SET_TENANT_ID',
|
|
||||||
SET_USER_ID: 'SET_USER_ID',
|
|
||||||
SET_LOCALE: 'SET_LOCALE',
|
|
||||||
};
|
};
|
||||||
1065
pnpm-lock.yaml
generated
1065
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user