Skip to content

Commit

Permalink
Merge pull request #52 from UoaWDCC/revert-50-feat/integrate-login
Browse files Browse the repository at this point in the history
Revert "Feat/integrate login"
  • Loading branch information
GodYazza authored Aug 7, 2024
2 parents 76a76f0 + 3cb5d70 commit f58645a
Show file tree
Hide file tree
Showing 15 changed files with 896 additions and 2,840 deletions.
37 changes: 4 additions & 33 deletions api/src/controllers/login.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,22 @@
// import {inject} from '@loopback/core';


import {get, HttpErrors, param, post, Request, requestBody, RestBindings} from '@loopback/rest';
import {get, HttpErrors, post, requestBody} from '@loopback/rest';
import {authenticate} from '@loopback/authentication';
import {loginParams, loginResponse} from './controller-types/login.controller.types';
import {inject, service} from '@loopback/core';
import {inject} from '@loopback/core';
import {repository} from '@loopback/repository';
import {AdminRepository, AlumniRepository, MemberRepository, SponsorRepository} from '../repositories';
import {FsaeRole, FsaeUser} from '../models';
import {FsaeUserService, JwtService, PasswordHasherService} from '../services';
import {FsaeUser} from '../models';
import {JwtService, PasswordHasherService} from '../services';
import {UserProfile} from '@loopback/security';
import {authorize} from '@loopback/authorization';

export class LoginController {
constructor(
@repository(AdminRepository) private adminRepository: AdminRepository,
@repository(AlumniRepository) private alumniRepository: AlumniRepository,
@repository(MemberRepository) private memberRepository: MemberRepository,
@repository(SponsorRepository) private sponsorRepository: SponsorRepository,
@service(FsaeUserService) private fsaeUserService: FsaeUserService,
@inject(RestBindings.Http.REQUEST) private req: Request,
@inject('services.jwtservice') private jwtService: JwtService,
@inject('services.passwordhasher') private passwordHasher: PasswordHasherService
) {}
Expand Down Expand Up @@ -150,32 +147,6 @@ export class LoginController {
return this.getUserToken(credentials, userSearchResults);
}

@get('/user/{userEmail}/role')
async getUserRole(
@param.path.string('userEmail') userEmail: string
) : Promise<string | null> {
return this.fsaeUserService.getUserRole(userEmail);
}

@get('/user/whoami')
// @response(200, PING_RESPONSE)
@authenticate('fsae-jwt')
@authorize({
allowedRoles: [FsaeRole.ADMIN, FsaeRole.SPONSOR, FsaeRole.ALUMNI, FsaeRole.ALUMNI],
scopes: ['allow-non-activated'],
})
whoAmI(): object {
throw Error("todo")
// Todo: Requires usage of UserRepo which is on another ticket.
// // Reply with a greeting, the current time, the url, and request headers
// return {
// greeting: 'This endpoint allows non activated accounts. ',
// date: new Date(),
// url: this.req.url,
// headers: Object.assign({}, this.req.headers),
// };
}

async getUserToken(credentials: loginParams, userSearchResults: FsaeUser[]) : Promise<loginResponse> {
// If no user found, invalid credientials
if (userSearchResults.length === 0) {
Expand Down
49 changes: 38 additions & 11 deletions api/src/controllers/register.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@ import {AdminRepository, AlumniRepository, MemberRepository, SponsorRepository}
import {HttpErrors, post, requestBody} from '@loopback/rest';
import {createFSAEUserDto} from './controller-types/register.controller.types';
import {Admin, FsaeRole} from '../models';
import {inject, service} from '@loopback/core';
import {FsaeUserService, PasswordHasherService} from '../services';
import {inject} from '@loopback/core';
import {PasswordHasherService} from '../services';

export class RegisterController {
constructor(
@repository(AdminRepository) private adminRepository: AdminRepository,
@repository(AlumniRepository) private alumniRepository: AlumniRepository,
@repository(MemberRepository) private memberRepository: MemberRepository,
@repository(SponsorRepository) private sponsorRepository: SponsorRepository,
@service(FsaeUserService) private fsaeUserService: FsaeUserService,
@inject('services.passwordhasher') private passwordHasher: PasswordHasherService
) {}

Expand Down Expand Up @@ -58,8 +57,15 @@ export class RegisterController {
},
}
})createUserDto: createFSAEUserDto): Promise<Admin> {
// Prevent duplicate user by email
if (await this.fsaeUserService.doesUserExist(createUserDto.email)) {
// Find user Profile
let userSearchResults = await this.adminRepository.find({
where: {
email: createUserDto.email,
},
});

// If no user found, invalid credientials
if (userSearchResults.length > 0) {
throw new HttpErrors.Conflict('Email already exists')
}

Expand Down Expand Up @@ -116,8 +122,15 @@ export class RegisterController {
},
}
})createUserDto: createFSAEUserDto): Promise<Admin> {
// Prevent duplicate user by email
if (await this.fsaeUserService.doesUserExist(createUserDto.email)) {
// Find user Profile
let userSearchResults = await this.memberRepository.find({
where: {
email: createUserDto.email,
},
});

// If no user found, invalid credientials
if (userSearchResults.length > 0) {
throw new HttpErrors.Conflict('Email already exists')
}

Expand Down Expand Up @@ -174,8 +187,15 @@ export class RegisterController {
},
}
})createUserDto: createFSAEUserDto): Promise<Admin> {
// Prevent duplicate user by email
if (await this.fsaeUserService.doesUserExist(createUserDto.email)) {
// Find user Profile
let userSearchResults = await this.sponsorRepository.find({
where: {
email: createUserDto.email,
},
});

// If no user found, invalid credientials
if (userSearchResults.length > 0) {
throw new HttpErrors.Conflict('Email already exists')
}

Expand Down Expand Up @@ -232,8 +252,15 @@ export class RegisterController {
},
}
})createUserDto: createFSAEUserDto): Promise<Admin> {
// Prevent duplicate user by email
if (await this.fsaeUserService.doesUserExist(createUserDto.email)) {
// Find user Profile
let userSearchResults = await this.alumniRepository.find({
where: {
email: createUserDto.email,
},
});

// If no user found, invalid credientials
if (userSearchResults.length > 0) {
throw new HttpErrors.Conflict('Email already exists')
}

Expand Down
41 changes: 0 additions & 41 deletions api/src/services/fsae-user.service.ts

This file was deleted.

1 change: 0 additions & 1 deletion api/src/services/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export * from './jwt.service';
export * from './password-hasher.service';
export * from './fsae-user.service';
5 changes: 5 additions & 0 deletions api/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2252,6 +2252,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==

fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==

function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
Expand Down
41 changes: 6 additions & 35 deletions web/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
"@mantine/hooks": "7.8.1",
"@reduxjs/toolkit": "^2.2.5",
"@tabler/icons-react": "^3.7.0",
"axios": "^1.7.2",
"jwt-decode": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand Down
44 changes: 0 additions & 44 deletions web/src/api/ApiInstance.ts

This file was deleted.

Loading

0 comments on commit f58645a

Please sign in to comment.