import { Where, repository } from '@loopback/repository'; import { post, param, get, patch, del, requestBody, HttpErrors } from '@loopback/rest'; import { User } from '../models'; import { UserRepository } from '../repositories'; export class UserController { constructor(@repository(UserRepository) public userRepository: UserRepository) {} @post('/users/signup') async create(@requestBody() obj: User): Promise { if (!obj.email && !obj.password) { throw new HttpErrors.BadRequest('email or password required'); } let response = await this.userRepository.find({ where: { email: obj.email } }); if (response.length > 0) { throw new HttpErrors.BadRequest('user already exist with email:' + response[0].email); } let responsed = await this.userRepository.create(obj); return { confirmation: 'Successfull', result: responsed, }; } @post('/users/login') async login(@requestBody() user: User): Promise { if (!user.email && !user.password) { throw new HttpErrors.BadRequest('email or password is empty'); } let response = await this.userRepository.find({ where: { email: user.email } }); if (response.length > 0) { if (response[0].email === user.email && response[0].password === user.password) return { confirmation: 'Successfull', result: response, }; return { confirmation: 'Failed', }; } else { throw new HttpErrors.BadRequest('email or password is incorrect!!!!'); } } @get('/users/count') async count(@param.query.string('where') where?: Where): Promise { return await this.userRepository.count(where); } @get('/users') // async find(@param.query.string('filter') filter?: Filter) async find(): Promise { return await this.userRepository.find(); } @patch('/users') async updateAll(@requestBody() obj: User, @param.query.string('where') where?: Where): Promise { return await this.userRepository.updateAll(obj, where); } @get('/users/{id}') async findById(@param.path.string('id') id: string): Promise { return await this.userRepository.findById(id); } @patch('/users/{id}') async updateById(@param.path.string('id') id: string, @requestBody() obj: User): Promise { return await this.userRepository.updateById(id, obj); } @del('/users/{id}') async deleteById(@param.path.string('id') id: string): Promise { return await this.userRepository.deleteById(id); } }