| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- const userModel = require('../model/user');
- const jwt = require('jsonwebtoken');
- const bcrypt = require('bcrypt');
- const secret = require('../config/secret');
- const Response = require('../util/response');
- const aliClient = require('../util/aliClient')
- class UserController {
- /**
- * 登录
- * @param ctx
- * @returns {Promise.<void>}
- */
- static async login(ctx) {
- const data = ctx.request.body;
- const user = await userModel.findByPhone(data.phone)
- if (user) {
- const confirmRes = bcrypt.compareSync(data.password, user.password);
- if(!confirmRes){
- ctx.body = Response.failed('密码错误,请重试')
- }else{
- // console.log('ctx',ctx);
- // console.log('ctx.cookies.redirect_uri',ctx.cookies.get('redirect_uri'));
- let redirect_uri = ctx.cookies.get('redirect_uri');
- let data = {
- iss : 'p.seecoder.cn',
- sub: encodeURIComponent(user.id + "&" + user.name + "&" + user.phone),
- aud: ctx.cookies.get('client_id'),
- auth_time: Math.floor(new Date().getTime() / 1000),
- iat: Math.floor(new Date().getTime() / 1000),
- exp: Math.floor(new Date().getTime() / 1000 + 24 * 60 * 60),
- };
- const token = jwt.sign(data, secret.sign);
- //ctx.redirect(redirect_uri + "?id_token=" + token);
- ctx.body = Response.success({token: token, name: user.name, path:redirect_uri});
- }
- } else {
- ctx.body = Response.failed('此账号不存在');
- }
- }
- /**
- * 注册
- * @param ctx
- * @returns {Promise.<void>}
- */
- static async register(ctx) {
- const data = ctx.request.body;
- if(!ctx.session.verification_phone || !ctx.session.verification_code){
- ctx.body = Response.failed('请重新获取验证码');
- }else if(ctx.session.verification_code !== data.identifyCode || ctx.session.verification_phone !== data.phone){
- ctx.body = Response.failed('验证码错误');
- }else{
- const hashPassword = bcrypt.hashSync(data.password, 10);
- const user = await userModel.create(data.name, hashPassword, data.phone);
- ctx.session.verification_phone = undefined;
- ctx.session.verification_code = undefined;
- if (user) {
- ctx.body = Response.success({name: user.name});
- } else {
- ctx.body = Response.failed('此手机号已注册');
- }
- }
- }
- static async sendMessage(ctx){
- let {phone} = ctx.request.body;
- let code = "";
- for(let i = 0; i < 6; i++){
- code+=Math.floor(Math.random()*10)
- }
- let params = {
- PhoneNumbers: phone,
- SignName: 'seeccoder',
- TemplateCode: 'SMS_181555598',
- TemplateParam: '{"code":"' + code + '"}'
- };
- let options = {
- timeout: 3000, // default 3000 ms
- formatAction: true, // default true, format the action to Action
- formatParams: true, // default true, format the parameter name to first letter upper case
- method: 'GET', // set the http method, default is GET
- headers: {}, // set the http request headers
- };
- try{
- const result = await aliClient.request('SendSms', params);
- console.log("result:", result);
- if(result.Code === "OK"){
- ctx.session.verification_code = code;
- ctx.session.verification_phone = phone;
- console.log('verification_code:', ctx.session.verification_code );
- }else{
- console.log("error:", message);
- }
- }catch (e) {
- console.log(e);
- }
- }
- }
- module.exports = UserController;
|