芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/extensions/users-permissions/controllers/User.js
'use strict'; const requestIp = require('request-ip'); const emailRegExp = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i; const _ = require('lodash'); const {sanitizeEntity} = require('strapi-utils'); module.exports = { async update(ctx) { const {id} = ctx.params;//id must be phoneNO let {username, name, email, oldPassword, password, phoneNo, family, avatarImage} = ctx.request.body; let query = { provider: 'local', }; const isEmail = emailRegExp.test(id); // Set the identifier to the appropriate query field. if (isEmail) { query.email = id.toLowerCase(); } else { const phoneNo = strapi.services.helpers.normalizePhoneNo(id); if (phoneNo) { query.phoneNo = id } else { query.id = id; } } const user = await strapi.query('user', 'users-permissions').findOne(query); if (!user) { return ctx.badRequest("auth.errors.phoneNoNotExist"); } if (oldPassword) {//if oldpasswors not null change pass can be done const validPassword = await strapi.plugins['users-permissions'].services.user.validatePassword( oldPassword, user.password ); if (!validPassword) { return ctx.badRequest(null, "auth.errors.invalidOldPassword"); } // Throw an error if the password selected by the user // contains more than two times the symbol '$'. if (strapi.plugins['users-permissions'].services.user.isHashed(password)) { return ctx.badRequest( null, "auth.errors.passwordIsHashed" ); } password = await strapi.plugins['users-permissions'].services.user.hashPassword({username, password, email}); } if (email) { const isEmail = emailRegExp.test(email); if (isEmail) { email = email.toLowerCase(); } else { return ctx.badRequest( null, "auth.errors.invalidEmail" ); } query = { provider: 'local', email }; const existEmail = await strapi.query('user', 'users-permissions').findOne(query); if (existEmail && existEmail.id !== user.id) { return ctx.badRequest( null, "auth.errors.duplicateEmail" ); } } let updated = null; if (!oldPassword) { password = null; updated = await strapi.query('user', 'users-permissions').update({id: user.id}, { username, name, family, email, avatarImage, phoneNo }); } else { updated = await strapi.query('user', 'users-permissions').update({id: user.id}, { username, name, family, password, email, avatarImage, phoneNo }); } const userInfo = sanitizeEntity(updated.toJSON ? updated.toJSON() : updated, { model: strapi.query('user', 'users-permissions').model, }); userInfo.token = strapi.plugins['users-permissions'].services.jwt.issue( _.pick(updated.toJSON ? updated.toJSON() : user, ['id']) ); userInfo.roles = [userInfo.role.name]; delete userInfo.created_by; delete userInfo.updated_by; delete userInfo.createdAt; delete userInfo.updatedAt; delete userInfo.id; delete userInfo._id; delete userInfo.confirmed; delete userInfo.blocked; delete userInfo.provider; delete userInfo.__v; delete userInfo.role; const clientIp = requestIp.getClientIp(ctx.request.req); const inputData = [{ip: clientIp}]; strapi.services.helpers.sendSms(phoneNo, "mhb1bjmtt4", inputData).then(); strapi.services.helpers.sendEmail(userInfo.email, "ویرایش پروفایل", "
پروفایل شما ویرایش شد
").then(); return ctx.send({ ...userInfo }); }, };