import { STATUS } from '@consts';
import { UserModel } from '@db/User';

module.exports = () => {
  return async function tokenParser(ctx, next) {

    if (!ctx.request.body || !ctx.request.body.token) {
      console.error('token not found');
      ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
      return;
    }
    const user = await UserModel.findUserByToken(ctx.request.body.token);
    if (!user) {
      console.error('token invalid');
      ctx.body = ctx.service.utils.resResult(STATUS.TOKEN_ERR);
      return;
    }
    ctx.uid = user.uid;
    ctx.serverType = ctx.request.body.serverType||user.serverType;
    ctx.userCode = user.userCode;
    ctx.pkgName = user.pkgName;
    ctx.tel = user.tel;
    ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] user: ${user.uid}`);

    await next();
  };
};

