implemented checkUsername resolver

This commit is contained in:
Ulf Gebhardt 2021-10-22 02:44:22 +02:00
parent 582e5c4a4f
commit af2a77c30f
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9

View File

@ -26,6 +26,7 @@ import { getCustomRepository } from 'typeorm'
import { UserSettingRepository } from '../../typeorm/repository/UserSettingRepository' import { UserSettingRepository } from '../../typeorm/repository/UserSettingRepository'
import { Setting } from '../enum/Setting' import { Setting } from '../enum/Setting'
import { UserRepository } from '../../typeorm/repository/User' import { UserRepository } from '../../typeorm/repository/User'
import { LoginUser } from '@entity/LoginUser'
@Resolver() @Resolver()
export class UserResolver { export class UserResolver {
@ -276,14 +277,26 @@ export class UserResolver {
} }
@Query(() => CheckUsernameResponse) @Query(() => CheckUsernameResponse)
async checkUsername( async checkUsername(@Args() { username }: CheckUsernameArgs): Promise<CheckUsernameResponse> {
@Args() { username, groupId = 1 }: CheckUsernameArgs, // Username empty?
): Promise<CheckUsernameResponse> { if (username === '') {
const response = await apiGet( throw new Error('Username must be set.')
CONFIG.LOGIN_API_URL + `checkUsername?username=${username}&group_id=${groupId}`, }
)
if (!response.success) throw new Error(response.data) // Do we fullfil the minimum character length?
return new CheckUsernameResponse(response.data) const MIN_CHARACTERS_USERNAME = 2
if (username.length < MIN_CHARACTERS_USERNAME) {
throw new Error(`Username must be at minimum ${MIN_CHARACTERS_USERNAME} characters long.`)
}
const usersFound = await LoginUser.count({ username })
// Username already present?
if (usersFound !== 0) {
throw new Error(`Username "${username}" already taken.`)
}
return new CheckUsernameResponse({ state: 'success' })
} }
@Query(() => CheckEmailResponse) @Query(() => CheckEmailResponse)