Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Changing password #401

Merged
merged 138 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from 136 commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
4bb6185
feat: core_keys table
AndreSoftwareDeveloper Jun 28, 2024
a62c2ac
feat: Sending URL for resetting password
AndreSoftwareDeveloper Jul 1, 2024
2a028a5
fix: Saving generated key in database
AndreSoftwareDeveloper Jul 1, 2024
b4f57eb
fix: Correct returning type in ChangePasswordCoreMembersResolver
AndreSoftwareDeveloper Jul 2, 2024
94163b0
feat: Hashing new password
AndreSoftwareDeveloper Jul 2, 2024
a06d079
feat(frontend)!: Remove themes folder
aXenDeveloper Jun 17, 2024
7326d9a
perf: Update packages
aXenDeveloper Jun 17, 2024
3b178d4
perf(backend): Improve paths for templates
aXenDeveloper Jun 17, 2024
53a31c3
refactor(frontend)!: Remove themes from AdminCP
aXenDeveloper Jun 17, 2024
8bca4f2
chore: Update few configs in ts
aXenDeveloper Jun 18, 2024
210ff64
feat: Create @vitnode/backend package in npm
aXenDeveloper Jun 18, 2024
b33a794
chore: Change name
aXenDeveloper Jun 18, 2024
ea6ccee
perf!: Move frontend & backend to apps folder
aXenDeveloper Jun 19, 2024
20ded70
chore: Fix paths in package.json
aXenDeveloper Jun 19, 2024
11a0884
chore: Fix imports after move apps
aXenDeveloper Jun 19, 2024
3cebb3e
feat(backend): Add nestjsMainApp function
aXenDeveloper Jun 19, 2024
71fe26d
perf(backend): Add VitNodeCoreModule
aXenDeveloper Jun 19, 2024
230c998
perf(backend): Move config to package
aXenDeveloper Jun 19, 2024
67061e3
perf(backend): Move database service to package
aXenDeveloper Jun 20, 2024
f5624c5
feat(backend): Create "vitnode-backend init" script to init require r…
aXenDeveloper Jun 20, 2024
186935a
fix(backend): Fix install packages when vitnode-backend packages has …
aXenDeveloper Jun 20, 2024
fd5f4e9
fix(backend): Build vitnode-backend package
aXenDeveloper Jun 21, 2024
189ab39
chore: Update packages
aXenDeveloper Jun 21, 2024
e6135d9
fix(github): Pre-install pnpm in build workflow
aXenDeveloper Jun 21, 2024
3643d89
chore: Change pnpm version
aXenDeveloper Jun 21, 2024
20beaa0
perf(backend): Move nav module into package
aXenDeveloper Jun 21, 2024
ee8a85b
perf(backend): Move session module to package
aXenDeveloper Jun 21, 2024
abdc71b
perf(backend): Move all guards to package
aXenDeveloper Jun 21, 2024
7445807
perf(backend): Move plugins module to package
aXenDeveloper Jun 21, 2024
9d31de0
perf(backend): Move nav admin service to package
aXenDeveloper Jun 22, 2024
cb5af9c
perf(backend): Move langs & plugins modules to package
aXenDeveloper Jun 22, 2024
49b3221
perf(backend): Move users module to package
aXenDeveloper Jun 22, 2024
5f79180
perf(backend): Move settings & middleware modules to package
aXenDeveloper Jun 22, 2024
424b381
perf(backend): Move email module to package
aXenDeveloper Jun 22, 2024
26b4fe2
fix(backend): Send emails when change config
aXenDeveloper Jun 22, 2024
f4b85e1
feat(backend): Create helpers service for email
aXenDeveloper Jun 22, 2024
cf0464c
perf(backend): Add frontend url to email helper by env
aXenDeveloper Jun 22, 2024
e0fb416
docs: Add docs by fumadocs
aXenDeveloper Jun 20, 2024
d6e5fc6
feat(docs): Add tailwind
aXenDeveloper Jun 22, 2024
a7a4cbc
chore: Change prettier config
aXenDeveloper Jun 22, 2024
0cf3e7b
perf(backend): Move init scripts to package
aXenDeveloper Jun 23, 2024
aaa81dd
perf(docs): Remove docs
aXenDeveloper Jun 23, 2024
59c9392
chore: Fix path to type vitnode-backend
aXenDeveloper Jun 23, 2024
7e39666
chore: Update packages
aXenDeveloper Jun 23, 2024
b6834eb
perf(backend): Delete migrations from repo
aXenDeveloper Jun 23, 2024
798941e
feat(backend): Add generate migration using config:init script
aXenDeveloper Jun 23, 2024
e21e868
refactor(frontend): Change package name form @vitnode/frontend to vit…
aXenDeveloper Jun 23, 2024
0aac3dd
perf(frontend): Move accordion, alert-dialog, loader & button to package
aXenDeveloper Jun 23, 2024
12eac9f
perf(frontend): Move ui components to package
aXenDeveloper Jun 23, 2024
bc3bd34
perf(frontend): Move color input to package
aXenDeveloper Jun 24, 2024
92fa3a0
perf(frontend): Move few files form components folder to package
aXenDeveloper Jun 24, 2024
ca33fd0
perf(frontend): Move root layout to package
aXenDeveloper Jun 25, 2024
122474e
perf(frontend): Move CONFIG obj to package
aXenDeveloper Jun 25, 2024
f415b48
perf(frontend): Move generate config script to package
aXenDeveloper Jun 25, 2024
536d7c5
perf: Remove @vitnode/shared package from scripts
aXenDeveloper Jun 25, 2024
d22793b
fix(backend): Add dotenv to init script for database
aXenDeveloper Jun 25, 2024
9ef13f7
chore(frontend): Change import components from package
aXenDeveloper Jun 25, 2024
f621516
perf(frontend): Remove build project for frontend package
aXenDeveloper Jun 26, 2024
220bc16
perf: Change @vitnode/shared to vitnode-shared name package
aXenDeveloper Jun 26, 2024
22b5687
perf(frontend): Move fetcher to package
aXenDeveloper Jun 26, 2024
57aab37
perf(frontend): Move auth layout to package
aXenDeveloper Jun 26, 2024
17350a7
chore: Change prettier singleQuote to true
aXenDeveloper Jun 26, 2024
7936e5e
perf(frontend): Move editor and icons to package
aXenDeveloper Jun 26, 2024
af792a8
perf(frontend): Move few components to package
aXenDeveloper Jun 26, 2024
cad9c9f
perf(frontend): Move admin layout to package
aXenDeveloper Jun 26, 2024
badbae6
perf(frontend): Move rest of components to package
aXenDeveloper Jun 26, 2024
52202b1
perf(frontend): Move generateMetadata root layout to package
aXenDeveloper Jun 26, 2024
9ef8b39
docs: Add docs
aXenDeveloper Jun 26, 2024
75908ff
perf(frontend): Move theme layout to package
aXenDeveloper Jun 27, 2024
dea636c
perf(frontend): Move auth pages to packages
aXenDeveloper Jun 27, 2024
fcf8625
perf(frontend): Move install vitnode page to package
aXenDeveloper Jun 27, 2024
9bf9beb
perf(frontend): Move user settings to package
aXenDeveloper Jun 27, 2024
355b956
perf(frontend): Move sign in page form admin to package
aXenDeveloper Jun 27, 2024
53b01da
perf(frontend): Move admin layout to package
aXenDeveloper Jun 27, 2024
fd8a6c4
perf: Change tsconfig for packages
aXenDeveloper Jun 28, 2024
b605f10
perf(backend): Add path in tsconfig
aXenDeveloper Jun 28, 2024
340ae80
fix(frontend): Import css file
aXenDeveloper Jun 28, 2024
53abe3a
fix(backend): Change run scripts from ts-node to node
aXenDeveloper Jun 28, 2024
5d62eb1
chore: Improve paths in backend package
aXenDeveloper Jun 28, 2024
10988c0
feat: Add tsup for build scripts
aXenDeveloper Jun 28, 2024
222317b
chore: Add tsup to eslintignore
aXenDeveloper Jun 28, 2024
9574c4c
chore: Exclude docs form build
aXenDeveloper Jun 28, 2024
7b83497
chore: Add build docs
aXenDeveloper Jun 28, 2024
f818121
refactor(backend): Restore paths
aXenDeveloper Jun 28, 2024
33295d3
perf(frontend): Move lang & advanced pages admin to package
aXenDeveloper Jun 28, 2024
fc8e424
perf(frontend): Move plugins pages admin to package
aXenDeveloper Jun 28, 2024
cbb4f93
perf(frontend): Move settings pages admin to package
aXenDeveloper Jun 29, 2024
cd76d6e
perf(frontend): Move styles pages admin to package
aXenDeveloper Jun 29, 2024
63eb2f1
perf(frontend): Move groups page admin to package
aXenDeveloper Jun 29, 2024
cb3a1f0
perf(frontend): Move staff pages admin to package
aXenDeveloper Jun 29, 2024
6299794
perf(frontend): Move users page admin to package
aXenDeveloper Jun 29, 2024
2d43981
perf(frontend): Move theme editor to package
aXenDeveloper Jun 29, 2024
ff90173
chore(frontend): Clean up admin gql
aXenDeveloper Jun 29, 2024
c26003d
perf(frontend): Improve graphql paths
aXenDeveloper Jun 29, 2024
eced92e
perf(frontend): Move middleware & i18n to package
aXenDeveloper Jun 29, 2024
1367685
feat: Add create-vitnode-app
aXenDeveloper Jun 30, 2024
f4cdba6
chore: Prepare for publish create-vitnode-app on node
aXenDeveloper Jun 30, 2024
2ce8561
perf: Improve information for package.json for packages
aXenDeveloper Jun 30, 2024
3349043
chore: Change license to MIT
aXenDeveloper Jun 30, 2024
2b2af52
chore: Improve .npmignore
aXenDeveloper Jun 30, 2024
460bbcc
feat: Add bump version by github action
aXenDeveloper Jun 30, 2024
cf69d9f
chore: change to right script name to bump version
aXenDeveloper Jun 30, 2024
c61432c
chore: Remove pnpm form release command
aXenDeveloper Jun 30, 2024
0ff1838
chore: Change npm version when bump version
gh-action Jun 30, 2024
26ff85a
chore: Add build script for publish npm packages
aXenDeveloper Jun 30, 2024
81520b6
chore: Add pnpm for publish action
aXenDeveloper Jun 30, 2024
5146ad8
chore: Disable build
aXenDeveloper Jun 30, 2024
47d40fe
chore: Add commit to bump version
aXenDeveloper Jun 30, 2024
c0236ad
chore: Bump version
aXenDeveloper Jun 30, 2024
9273467
ci: version bump to v0.0.4-canary.2
gh-action-bump-version Jun 30, 2024
eefdc05
chore: uncomment to publish bump versions
aXenDeveloper Jun 30, 2024
8f45837
chore: Clean up
aXenDeveloper Jun 30, 2024
6183bd0
ci: version bump to v0.0.4
gh-action-bump-version Jun 30, 2024
a358ebf
fix: Publish scripts to npm
aXenDeveloper Jun 30, 2024
24fa958
ci: version bump to v0.0.5
gh-action-bump-version Jun 30, 2024
85154bd
ci: version bump to v0.0.6-canary.0
gh-action-bump-version Jun 30, 2024
292f7cb
Create LICENSE
aXenDeveloper Jun 30, 2024
aa791e8
refactor(backend): Move sign up from members to sessions module
aXenDeveloper Jul 1, 2024
9c58517
refactor(frontend): Middleware
aXenDeveloper Jul 1, 2024
34f1bd5
feat(frontend): Add authorization admin using middleware
aXenDeveloper Jul 1, 2024
09edb5a
docs: Refactor docs
aXenDeveloper Jul 1, 2024
f3ce29b
fix(backend): Get VitNode version form package.json
aXenDeveloper Jul 1, 2024
89318cd
feat: core_keys table
AndreSoftwareDeveloper Jun 28, 2024
3ef4f1d
feat: Sending URL for resetting password
AndreSoftwareDeveloper Jul 1, 2024
9e3dfaf
fix: Correct returning type in ChangePasswordCoreMembersResolver
AndreSoftwareDeveloper Jul 2, 2024
391eab0
feat: Hashing new password
AndreSoftwareDeveloper Jul 2, 2024
de1a01f
fix: Fixing conflicts
AndreSoftwareDeveloper Jul 2, 2024
f8dbab1
Merge branch 'canary' into master
AndreSoftwareDeveloper Jul 2, 2024
eb358f1
fix: Removed redundant files
AndreSoftwareDeveloper Jul 2, 2024
5e84db6
Merge remote-tracking branch 'refs/remotes/origin/master'
AndreSoftwareDeveloper Jul 2, 2024
027688b
refactor: core_keys renamed into core_users_password_keys
AndreSoftwareDeveloper Jul 2, 2024
9a1010e
fix: Removed redundant files
AndreSoftwareDeveloper Jul 2, 2024
e44a4b6
refactor: core_keys renamed into core_users_password_keys
AndreSoftwareDeveloper Jul 2, 2024
c1cb0bf
refactor: Formatting
AndreSoftwareDeveloper Jul 2, 2024
310cebb
feat: Changing password
AndreSoftwareDeveloper Jul 5, 2024
53f23c0
feat: Function for pasword encryption
AndreSoftwareDeveloper Jul 5, 2024
a954430
fix: Applied suggestions from reviewer
AndreSoftwareDeveloper Jul 9, 2024
f47afe3
fix: Applied suggestions from reviewer
AndreSoftwareDeveloper Jul 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/backend/src/core/members/members.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import { DeleteCoreMembersService } from './delete/delete.service';
import { CreateKeyResetPasswordCoreMembersService } from './reset_password/create_key/create_key.service';
import { CreateKeyResetPasswordCoreMembersResolver } from './reset_password/create_key/create_key.resolver';
import { SetPasswordCoreMembersResolver } from './set_password/set_password.resolver';
import { SetPasswordCoreMembersService } from '../sessions/encrypt_password';

@Module({
providers: [
Expand All @@ -16,6 +18,8 @@
DeleteCoreMembersService,
CreateKeyResetPasswordCoreMembersService,
CreateKeyResetPasswordCoreMembersResolver,
SetPasswordCoreMembersResolver,
SetPasswordCoreMembersService

Check failure on line 22 in packages/backend/src/core/members/members.module.ts

View workflow job for this annotation

GitHub Actions / linting

Insert `,`
],
imports: [AvatarCoreMembers],
})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Args, Mutation, Resolver } from '@nestjs/graphql';

import { ChangePasswordCoreMembersArgs } from './dto/change_password.args';
import { ChangePasswordCoreMembersObj } from './dto/change_password.obj';
import { ChangePasswordCoreMembersService } from './change_password.service';

@Resolver()
export class ChangePasswordCoreMembersResolver {
constructor(private readonly service: ChangePasswordCoreMembersService) {}

@Mutation(() => ChangePasswordCoreMembersObj)
async core_members__change_password(
@Args() args: ChangePasswordCoreMembersArgs,
): Promise<ChangePasswordCoreMembersObj> {
return this.service.change_password(args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { eq } from 'drizzle-orm';

import { ChangePasswordCoreMembersArgs } from './dto/change_password.args';
import { ChangePasswordCoreMembersObj } from './dto/change_password.obj';

import { core_users, core_users_pass_reset } from '@/templates/core/admin/database/schema/users';

Check failure on line 8 in packages/backend/src/core/members/reset_password/change_password/change_password.service.ts

View workflow job for this annotation

GitHub Actions / linting

Replace `·core_users,·core_users_pass_reset·` with `⏎··core_users,⏎··core_users_pass_reset,⏎`
import { DatabaseService } from '@/database';
import { encryptPassword } from '@/core/sessions/encrypt_password';

@Injectable()
export class ChangePasswordCoreMembersService {
constructor(
private readonly databaseService: DatabaseService,
private readonly configService: ConfigService,
) {}

async change_password({
hashKey,
password,
}: ChangePasswordCoreMembersArgs): Promise<ChangePasswordCoreMembersObj> {
const keyData =
await this.databaseService.db.query.core_users_pass_reset.findFirst({
where: eq(core_users_pass_reset.key, hashKey),
});

const id = keyData.user_id;
const hashPassword = await encryptPassword(this.configService, password);

const update = await this.databaseService.db
.update(core_users)
.set({
password: hashPassword,
})
.where(eq(core_users.id, id))
.returning();

return update[0];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { IsStrongPassword } from 'class-validator';
import { ArgsType, Field } from '@nestjs/graphql';

@ArgsType()
export class ChangePasswordCoreMembersArgs {
@Field(() => String)
hashKey: string;

@IsStrongPassword({
minLength: 8,
minLowercase: 1,
minUppercase: 1,
minNumbers: 1,
minSymbols: 1,
})
@Field(() => String)
password: string;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Field, Int, ObjectType } from '@nestjs/graphql';

@ObjectType()
export class ChangePasswordCoreMembersObj {
@Field(() => Int)
id: number;

@Field(() => String)
name: string;

@Field(() => String)
email: string;

@Field(() => String)
name_seo: string;

@Field(() => String)
password: string;
AndreSoftwareDeveloper marked this conversation as resolved.
Show resolved Hide resolved

@Field(() => Date)
joined: Date;

@Field(() => Int)
posts: number;

@Field(() => Boolean)
newsletter: boolean;

@Field(() => String)
avatar_color: string;

@Field(() => Int)
group_id: number;

@Field(() => String)
first_name: string;

@Field(() => String)
last_name: string;

@Field(() => Date)
birthday: Date;

@Field(() => String)
ip_address: string;

@Field(() => String)
language: string;
}
15 changes: 15 additions & 0 deletions packages/backend/src/core/sessions/encrypt_password.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { ConfigService } from '@nestjs/config';
import { genSalt, hash } from 'bcrypt';

async function encryptPassword(
configService: ConfigService,
password: string

Check failure on line 6 in packages/backend/src/core/sessions/encrypt_password.ts

View workflow job for this annotation

GitHub Actions / linting

Insert `,`
): Promise<string> {
const passwordSalt = await genSalt(

Check failure on line 8 in packages/backend/src/core/sessions/encrypt_password.ts

View workflow job for this annotation

GitHub Actions / linting

Replace `⏎····configService.getOrThrow('password_salt')⏎··` with `configService.getOrThrow('password_salt')`
configService.getOrThrow('password_salt')
);
const hashPassword = await hash(password, passwordSalt);
return hashPassword;

Check warning on line 12 in packages/backend/src/core/sessions/encrypt_password.ts

View workflow job for this annotation

GitHub Actions / linting

Expected newline before return statement
}

export { encryptPassword };
7 changes: 2 additions & 5 deletions packages/backend/src/core/sessions/sign_up/sign_up.service.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Injectable } from '@nestjs/common';
import { genSalt, hash } from 'bcrypt';
import { count } from 'drizzle-orm';
import { ConfigService } from '@nestjs/config';
import { removeSpecialCharacters } from 'vitnode-shared';
Expand All @@ -12,7 +11,8 @@
import { core_users } from '../../../templates/core/admin/database/schema/users';
import { Ctx } from '../../../utils';
import { CustomError } from '../../../errors';
import { getUserIp } from '../../../functions';

Check warning on line 14 in packages/backend/src/core/sessions/sign_up/sign_up.service.ts

View workflow job for this annotation

GitHub Actions / linting

There should be at least one empty line between import groups
import { encryptPassword } from '../encrypt_password';

Check warning on line 15 in packages/backend/src/core/sessions/sign_up/sign_up.service.ts

View workflow job for this annotation

GitHub Actions / linting

`../encrypt_password` import should occur before import of `../../../database`

@Injectable()
export class SignUpCoreSessionsService extends AvatarColorService {
Expand Down Expand Up @@ -79,10 +79,7 @@
});
}

const passwordSalt = await genSalt(
this.configService.getOrThrow('password_salt'),
);
const hashPassword = await hash(password, passwordSalt);
const hashPassword = await encryptPassword(this.configService, password);

const user = await this.databaseService.db
.insert(core_users)
Expand Down
Loading