Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict'
- import * as indicative from 'indicative'
- import { RateLimiter } from "limiter"
- import { User } from '../../models/User'
- import { Socket } from '../../../scripts/class/Socket'
- import { Password } from '../../../scripts/class/Hash'
- import { rules } from '../../../config/config'
- const limiter = new RateLimiter(5, 'hour', true)
- const profile = (instance: Socket, socket: any) => {
- socket.on('profile', async (data) => {
- const { DB } = instance
- const user = new User(DB)
- indicative.validate(data, rules).then(async () => {
- const { pseudo, tag, email, password, newPassword } = data
- const emailCursor = await user.filter({ tag })
- const result = await emailCursor.toArray()
- const userID = result[0].id
- if (userID) {
- limiter.removeTokens(1, async (err, remainingRequests) => {
- if (remainingRequests < 1) {
- socket.emit('profile', {
- success: false,
- message: 'Vous changez vos informations trop rapidement, veuillez réessayer plus tard.'
- })
- } else {
- if (pseudo) {
- user.update(userID, { pseudo }, password).then((res) => {
- if (!res) {
- socket.emit('profile', {
- success: false,
- message: 'Mot de passe invalide'
- })
- } else {
- socket.emit('profile', { success: true })
- }
- })
- }
- if (email) {
- user.update(userID, { email }, password).then((res) => {
- if (!res) {
- socket.emit('profile', {
- success: false,
- message: 'Mot de passe invalide'
- })
- } else {
- socket.emit('profile', { success: true })
- }
- })
- }
- if (password && newPassword) {
- const hashedPassword = await Password.hash(newPassword)
- user.update(userID, { password: hashedPassword }, password).then((res) => {
- if (!res) {
- socket.emit('profile', {
- success: false,
- message: 'Mot de passe invalide'
- })
- } else {
- socket.emit('profile', { success: true })
- }
- })
- }
- } // Les multiples } & }) me dérangent, est-ce grave ? Y a t il une méthode que je peux utiliser pour remplacer ça ?
- }) /*
- J'ai regardé vite fait, je pourrai faire quelque chose de ce genre la non ?
- userID
- .then() // do something inside
- .then() // do something inside
- ???
- */
- }
- }).catch((err) => {
- socket.emit('profile', {
- success: false,
- message: `${err[0].field} obligatoire`
- })
- })
- })
- }
- export { profile }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement