예제 #1
0
        public async Task <Result <int> > UpdateUserAsync([Required][FromBody] AdminUserUpdatePasswordCommand request, CancellationToken cancellationToken = default)
        {
            var admin = await db.Context.AdminUser.FindAsync(request.Id);

            request.NewPassword = Encrypt.Md5By32(request.NewPassword);
            request.OldPassword = Encrypt.Md5By32(request.OldPassword);

            if (!admin.Password.Equals(request.OldPassword))
            {
                Failure.Error("旧密码错误");
            }

            var res = await db.UpdateAsync <AdminUserEntity>(c => c.Id == request.Id, c => new AdminUserEntity {
                Password = request.NewPassword
            }, cancellationToken);

            if (res > 0)
            {
                return(RestFull.Success(data: res));
            }
            else
            {
                return(RestFull.Fail(data: res));
            }
        }
예제 #2
0
        public async Task <AdminUserDto> LoginAsync(AdminUserLoginCommand request, CancellationToken cancellationToken)
        {
            var user = default(AdminUserEntity);

            request.Password = Encrypt.Md5By32(request.Password);

            var loginWay = "";

            if (!Valid.IsMobileNumberSimple(request.Account))
            {
                user = await db.Context.AdminUser.Where(c => c.UserName.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken);

                if (user == null)
                {
                    Failure.Error("账号不存在");
                }

                loginWay = "Mobile";
            }
            else
            {
                user = await db.Context.AdminUser.Where(c => c.Mobile.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken);

                if (user == null)
                {
                    Failure.Error("手机号码不存在");
                }

                loginWay = "UserName";
            }

            if (!user.Password.Equals(request.Password))
            {
                Failure.Error("密码错误");
            }
            if (user.Status != Status.Show)
            {
                Failure.Error("您的帐号禁止登录,请与管理员联系!");
            }


            user.LoginCount   += 1;
            user.LoginLastTime = DateTime.Now;
            user.LoginLastIp   = Web.IP;

            user.LoginRecords.Add(new LoginRecordEntity
            {
                AdminId   = user.Id,
                LoginIp   = user.LoginLastIp,
                LoginTime = user.LoginLastTime,
                LoginWay  = loginWay
            });

            db.Update(user);

            return(mapper.Map <AdminUserDto>(user));
        }
예제 #3
0
        public async Task <int> UpdateAsync(AdminUserUpdatePasswordCommand request, CancellationToken cancellationToken)
        {
            var admin = await db.Context.AdminUser.FindAsync(request.Id);

            request.NewPassword = Encrypt.Md5By32(request.NewPassword);
            request.OldPassword = Encrypt.Md5By32(request.OldPassword);

            if (!admin.Password.Equals(request.OldPassword))
            {
                Failure.Error("旧密码错误");
            }

            return(await db.UpdateAsync <AdminUserEntity>(c => c.Id == request.Id, c => new AdminUserEntity {
                Password = request.NewPassword
            }, cancellationToken));
        }
예제 #4
0
        public async Task <(string, string)> LoginAsync(AdminUserLoginCommand request, CancellationToken cancellationToken = default)
        {
            var user = default(AdminUserEntity);

            request.Password = Encrypt.Md5By32(request.Password);

            var loginWay = "";

            if (!Valid.IsMobileNumberSimple(request.Account))
            {
                user = await db.Context.AdminUser.Where(c => c.UserName.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken);

                if (user == null)
                {
                    Failure.Error("账号不存在");
                }

                loginWay = "Mobile";
            }
            else
            {
                user = await db.Context.AdminUser.Where(c => c.Mobile.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken);

                if (user == null)
                {
                    Failure.Error("手机号码不存在");
                }

                loginWay = "UserName";
            }

            if (!user.Password.Equals(request.Password))
            {
                Failure.Error("密码错误");
            }
            if (user.Status != Status.Show)
            {
                Failure.Error("您的帐号禁止登录,请与管理员联系!");
            }


            user.LoginCount   += 1;
            user.LoginLastTime = DateTime.Now;
            user.LoginLastIp   = Web.IP;

            user.LoginRecords.Add(new LoginRecordEntity
            {
                AdminId   = user.Id,
                LoginIp   = user.LoginLastIp,
                LoginTime = user.LoginLastTime,
                LoginWay  = loginWay
            });

            db.Update(user);

            // 生成 token
            var accessToken = JWTEncryption.Encrypt(new Dictionary <string, object>
            {
                { userId, user.Id },
                { userName, user.UserName }
            });

            // 生成 刷新token
            var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken);

            // 设置 Swagger 自动登录
            Web.HttpContext.SigninToSwagger(accessToken);
            // 设置刷新 token
            Web.HttpContext.Response.Headers["x-access-token"] = refreshToken;

            return(accessToken, refreshToken);
        }