diff --git a/backend/src/apis/loginAPI.ts.old b/backend/src/apis/loginAPI.ts.old deleted file mode 100644 index 8e4b5e040..000000000 --- a/backend/src/apis/loginAPI.ts.old +++ /dev/null @@ -1,184 +0,0 @@ -import axios from 'axios' -import { graphql } from 'graphql' -import CONFIG from '../config' -import { User } from '../graphql/models/User' -import { LoginUserInput } from '../graphql/inputs/LoginUserInput' -// eslint-disable-next-line no-unused-vars -// import regeneratorRuntime from 'regenerator-runtime' - -// control email-text sended with email verification code -const EMAIL_TYPE = { - DEFAULT: 2, // if user has registered directly - ADMIN: 5, // if user was registered by an admin -} - -const apiGet = async (url: string) => { - try { - const result = await axios.get(url) - if (result.status !== 200) { - throw new Error('HTTP Status Error ' + result.status) - } - if (!['success', 'warning'].includes(result.data.state)) { - throw new Error(result.data.msg) - } - return { success: true, result } - } catch (error) { - return { success: false, result: error } - } -} - -const apiPost = async (url: string, payload: any): Promise => { - try { - const result = await axios.post(url, payload) - if (result.status !== 200) { - throw new Error('HTTP Status Error ' + result.status) - } - if (result.data.state === 'warning') { - return { success: true, result: result.data.errors } - } - if (result.data.state !== 'success') { - throw new Error(result.data.msg) - } - return { success: true, result } - } catch (error) { - return { success: false, result: error } - } -} - -interface NetworkInfosResult { - state: string - msg?: string - errors: string[] - data: { - groups?: string[] - } -} - -interface LoginResult { - state: string - msg?: string - details?: number - info?: string - user?: User - // eslint-disable-next-line camelcase - session_id?: number -} - -const loginAPI = { - login: async (login: LoginUserInput): Promise => { - return (await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', login)).result.data - }, - logout: async (sessionId: number): Promise => { - const payload: any = { session_id: sessionId } - return apiPost(CONFIG.LOGIN_API_URL + 'logout', payload) - }, - create: async ( - email: string, - firstName: string, - lastName: string, - password: string, - ): Promise => { - const payload: any = { - email, - first_name: firstName, - last_name: lastName, - password, - emailType: EMAIL_TYPE.DEFAULT, - login_after_register: true, - } - return apiPost(CONFIG.LOGIN_API_URL + 'createUser', payload) - }, - sendEmail: async ( - email: string, - email_text = 7, - email_verification_code_type = 'resetPassword', - ): Promise => { - const payload: any = { - email, - email_text, - email_verification_code_type, - } - return apiPost(CONFIG.LOGIN_API_URL + 'sendEmail', payload) - }, - loginViaEmailVerificationCode: async (optin: number): Promise => { - return apiGet( - CONFIG.LOGIN_API_URL + 'loginViaEmailVerificationCode?emailVerificationCode=' + optin, - ) - }, - getUserInfos: async (sessionId: number, email: string): Promise => { - const payload: any = { - session_id: sessionId, - email: email, - ask: ['user.first_name', 'user.last_name'], - } - return apiPost(CONFIG.LOGIN_API_URL + 'getUserInfos', payload) - }, - updateUserInfos: async (sessionId: number, email: string, data: any): Promise => { - const payload: any = { - session_id: sessionId, - email, - update: { - 'User.first_name': data.firstName, - 'User.last_name': data.lastName, - 'User.description': data.description, - }, - } - return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload) - }, - changePassword: async (sessionId: number, email: string, password: string): Promise => { - const payload: any = { - session_id: sessionId, - email, - password, - } - return apiPost(CONFIG.LOGIN_API_URL + 'resetPassword', payload) - }, - changePasswordProfile: async ( - sessionId: number, - email: string, - password: string, - passwordNew: string, - ): Promise => { - const payload: any = { - session_id: sessionId, - email, - update: { - 'User.password_old': password, - 'User.password': passwordNew, - }, - } - return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload) - }, - changeUsernameProfile: async ( - sessionId: number, - email: string, - username: string, - ): Promise => { - const payload: any = { - session_id: sessionId, - email, - update: { - 'User.username': username, - }, - } - return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload) - }, - updateLanguage: async (sessionId: number, email: string, language: string): Promise => { - const payload: any = { - session_id: sessionId, - email, - update: { - 'User.language': language, - }, - } - return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload) - }, - checkUsername: async (username: string, groupId = 1): Promise => { - return apiGet(CONFIG.LOGIN_API_URL + `checkUsername?username=${username}&group_id=${groupId}`) - }, - getNetworkInfos: async (ask: string[]): Promise => { - return (await apiPost(CONFIG.LOGIN_API_URL + `networkInfos`, { ask: ask })).result.data - }, -} - -export { loginAPI, NetworkInfosResult, LoginResult } diff --git a/backend/src/graphql/models/Balance.ts b/backend/src/graphql/models/Balance.ts index 4897f3265..93d497e0c 100644 --- a/backend/src/graphql/models/Balance.ts +++ b/backend/src/graphql/models/Balance.ts @@ -1,27 +1,21 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity, Column } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class Balance extends BaseEntity { +export class Balance { constructor(json: any) { - super() this.balance = Number(json.balance) this.decay = Number(json.decay) this.decayDate = json.decay_date } @Field(() => Number) - @Column() balance: number @Field(() => Number) - @Column() decay: number @Field(() => String) - @Column() decayDate: string } diff --git a/backend/src/graphql/models/CheckUsernameResponse.ts b/backend/src/graphql/models/CheckUsernameResponse.ts index de5724c8d..b3186ffcf 100644 --- a/backend/src/graphql/models/CheckUsernameResponse.ts +++ b/backend/src/graphql/models/CheckUsernameResponse.ts @@ -1,13 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class CheckUsernameResponse extends BaseEntity { +export class CheckUsernameResponse { constructor(json: any) { - super() this.state = json.state this.msg = json.msg this.groupId = json.group_id diff --git a/backend/src/graphql/models/CreateResponse.ts b/backend/src/graphql/models/CreateResponse.ts deleted file mode 100644 index 144d6456c..000000000 --- a/backend/src/graphql/models/CreateResponse.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity } from 'typeorm' -import { ObjectType, Field } from 'type-graphql' - -@Entity() -@ObjectType() -export class CreateResponse extends BaseEntity { - constructor(json: any) { - super() - this.state = json.state - } - - @Field(() => String) - state: string -} diff --git a/backend/src/graphql/models/LoginResponse.ts b/backend/src/graphql/models/LoginResponse.ts index 2abe1ef96..258784b75 100644 --- a/backend/src/graphql/models/LoginResponse.ts +++ b/backend/src/graphql/models/LoginResponse.ts @@ -1,25 +1,20 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity, Column } from 'typeorm' import { ObjectType, Field } from 'type-graphql' import { User } from './User' // temporaray solution until we have JWT implemented -@Entity() @ObjectType() -export class LoginResponse extends BaseEntity { +export class LoginResponse { constructor(json: any) { - super() this.sessionId = json.session_id this.user = new User(json.user) } @Field(() => Number) - @Column() sessionId: number @Field(() => User) - @Column() user: User } diff --git a/backend/src/graphql/models/LoginViaVerificationCode.ts b/backend/src/graphql/models/LoginViaVerificationCode.ts index bd0d66781..61286ca0e 100644 --- a/backend/src/graphql/models/LoginViaVerificationCode.ts +++ b/backend/src/graphql/models/LoginViaVerificationCode.ts @@ -1,22 +1,17 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity, Column } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class LoginViaVerificationCode extends BaseEntity { +export class LoginViaVerificationCode { constructor(json: any) { - super() this.sessionId = json.session_id this.email = json.user.email } @Field(() => Number) - @Column() sessionId: number @Field(() => String) - @Column() email: string } diff --git a/backend/src/graphql/models/ResetPasswordResponse.ts b/backend/src/graphql/models/ResetPasswordResponse.ts deleted file mode 100644 index aae209059..000000000 --- a/backend/src/graphql/models/ResetPasswordResponse.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity } from 'typeorm' -import { ObjectType, Field } from 'type-graphql' - -@Entity() -@ObjectType() -export class ResetPasswordResponse extends BaseEntity { - constructor(json: any) { - super() - this.state = json.state - } - - @Field(() => String) - state: string -} diff --git a/backend/src/graphql/models/SendPasswordResetEmailResponse.ts b/backend/src/graphql/models/SendPasswordResetEmailResponse.ts index f426d5245..d387efede 100644 --- a/backend/src/graphql/models/SendPasswordResetEmailResponse.ts +++ b/backend/src/graphql/models/SendPasswordResetEmailResponse.ts @@ -1,13 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class SendPasswordResetEmailResponse extends BaseEntity { +export class SendPasswordResetEmailResponse { constructor(json: any) { - super() this.state = json.state this.msg = json.msg } diff --git a/backend/src/graphql/models/UpdateUserInfosResponse.ts b/backend/src/graphql/models/UpdateUserInfosResponse.ts index 765da5208..0e41f21cb 100644 --- a/backend/src/graphql/models/UpdateUserInfosResponse.ts +++ b/backend/src/graphql/models/UpdateUserInfosResponse.ts @@ -1,13 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class UpdateUserInfosResponse extends BaseEntity { +export class UpdateUserInfosResponse { constructor(json: any) { - super() this.validValues = json.valid_values } diff --git a/backend/src/graphql/models/User.ts b/backend/src/graphql/models/User.ts index 68543bf09..47037d483 100644 --- a/backend/src/graphql/models/User.ts +++ b/backend/src/graphql/models/User.ts @@ -1,18 +1,15 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { Entity, BaseEntity, Column } from 'typeorm' import { ObjectType, Field } from 'type-graphql' -@Entity() @ObjectType() -export class User extends BaseEntity { +export class User { /* @Field(() => ID) @PrimaryGeneratedColumn() id: number */ constructor(json: any) { - super() this.email = json.email this.firstName = json.first_name this.lastName = json.last_name @@ -22,62 +19,49 @@ export class User extends BaseEntity { } @Field(() => String) - @Column({ length: 191 }) email: string @Field(() => String) - @Column({ length: 150 }) firstName: string @Field(() => String) - @Column() lastName: string @Field(() => String) - @Column() username: string @Field(() => String) - @Column('text') description: string /* @Field(() => String) - @Column({ length: 64 }) pubkey: string // not sure about the type here. Maybe better to have a string @Field(() => number) - @Column({ type: 'datetime' }) created: number @Field(() => Boolean) - @Column({ default: false }) emailChecked: boolean @Field(() => Boolean) - @Column({ default: false }) passphraseShown: boolean */ @Field(() => String) - @Column({ default: 'de' }) language: string /* @Field(() => Boolean) - @Column({ default: false }) disabled: boolean */ /* I suggest to have a group as type here @Field(() => ID) - @Column() groupId: number // what is puvlisherId? @Field(() => ID) - @Column({ default: 0 }) publisherId: number */ } diff --git a/backend/src/graphql/resolvers/UserResolver.ts b/backend/src/graphql/resolvers/UserResolver.ts index 5791ccd15..4361bd0ed 100644 --- a/backend/src/graphql/resolvers/UserResolver.ts +++ b/backend/src/graphql/resolvers/UserResolver.ts @@ -1,9 +1,7 @@ // import jwt from 'jsonwebtoken' import { Resolver, Query, Args, Arg } from 'type-graphql' import CONFIG from '../../config' -import { ResetPasswordResponse } from '../models/ResetPasswordResponse' import { CheckUsernameResponse } from '../models/CheckUsernameResponse' -import { CreateResponse } from '../models/CreateResponse' import { GetUserInfoResponse } from '../models/UserInfoData' import { LoginResponse } from '../models/LoginResponse' import { LoginViaVerificationCode } from '../models/LoginViaVerificationCode' @@ -74,10 +72,8 @@ export class UserResolver { return 'success' } - @Query(() => CreateResponse) - async create( - @Args() { email, firstName, lastName, password }: CreateUserArgs, - ): Promise { + @Query(() => String) + async create(@Args() { email, firstName, lastName, password }: CreateUserArgs): Promise { const payload = { email, first_name: firstName, @@ -90,7 +86,7 @@ export class UserResolver { if (!result.success) { throw new Error(result.data) } - return new CreateResponse(result.data) + return 'success' } // TODO @@ -120,11 +116,11 @@ export class UserResolver { return apiPost(CONFIG.LOGIN_API_URL + 'getUserInfos', payload) } - @Query(() => ResetPasswordResponse) + @Query(() => String) async resetPassword( @Args() { sessionId, email, password }: ChangePasswordArgs, - ): Promise { + ): Promise { const payload = { session_id: sessionId, email, @@ -132,7 +128,7 @@ export class UserResolver { } const result = await apiPost(CONFIG.LOGIN_API_URL + 'resetPassword', payload) if (!result.success) throw new Error(result.data) - return new ResetPasswordResponse(result.data) + return 'sucess' } @Query(() => UpdateUserInfosResponse)