コード例 #1
0
        public async Task CheckUser_ForIncorrectPassword_ReturnsError()
        {
            // Arrange

            var request = new CheckUserRequest
            {
                Email    = "*****@*****.**",
                Password = "******",
            };

            using var factory = new CustomWebApplicationFactory();
            var client = factory.CreateServiceClient <IIdentityServiceClient>();

            await SeedUser(client, "*****@*****.**", "Qwerty-Qwerty1");

            // Act

            var response = await client.CheckUserAsync(request);

            // Assert

            var expectedError = new IdentityServiceError
            {
                ErrorCode        = "IncorrectUserNameOrPassword",
                ErrorDescription = "The user name or password is incorrect.",
            };

            response.UserId.Should().BeEmpty();
            response.Errors.Should().BeEquivalentTo(expectedError);
        }
コード例 #2
0
        public Task <CheckUserResponse> CheckUserAsync(CheckUserRequest request)
        {
            //
            var client = new JsonServiceClient(Config.http);
            var task   = client.GetAsync(request);

            return(task);
            //
        }
コード例 #3
0
        /// <summary>
        /// ユーザーの存在チェック
        /// 存在しない場合はnull
        /// 存在すればユーザー情報を返す
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public CheckUserResponse CheckUser(CheckUserRequest req)
        {
            var target = testData.FirstOrDefault(x => x.LoginId == req.LoginId && x.Password == req.Password);

            if (target == null)
            {
                return(null);
            }

            return(new CheckUserResponse(target.Id, target.Name, target.MailAddress));
        }
コード例 #4
0
        public async Task <CheckUserResponse> CheckUser([FromBody] CheckUserRequest request)
        {
            var user = await _userService.GetByEmailAsync(request.Email);

            if (user == null)
            {
                throw new AppErrorException(new AppError(ErrorCode.UserNotFound));
            }

            return(new CheckUserResponse
            {
                Email = user.Email
            });
        }
コード例 #5
0
        public object Get(CheckUserRequest request)
        {
            OrmLiteConfig.DialectProvider = MySqlDialectProvider.Instance;

            IDbConnection db =
                _connectstring.OpenDbConnection();

            if (request.Number == "" || request.Password == "" || request.School == 0 || request.UserType == "")
            {
                throw new ServiceStack.ServiceResponseException("请输入完整参数");
            }
            var user = db.Single <User> (r => r.Number == request.Number && r.SchoolId == request.School);

            if (user == null)
            {
                throw new ServiceResponseException("选择学校不存在此用户");
            }
            if (user.Password != request.Password)
            {
                throw new ServiceResponseException("请输入正确的密码");
            }
            if (user.UserType == "学生")
            {
                var stu = db.Single <Student> (s => s.StudentId == user.Id);
                if (stu == null)
                {
                    throw new ServiceResponseException("不存在此学生");
                }
                if (stu.IsRegistered == false)
                {
                    throw new ServiceResponseException("你没有注册");
                }

                if (stu.DeviceId != request.DeviceId)
                {
                    throw new ServiceResponseException("请在你注册的手机登录");
                }
            }
            //
            CheckUserResponse ponse = new CheckUserResponse()
            {
                UserInfo = user
            };

            return(ponse);
        }
コード例 #6
0
        public async Task CheckUser_ForCorrectCredentialsAfterFourFailedAttempts_CompletesSuccessfully()
        {
            // Arrange

            var correctRequest = new CheckUserRequest
            {
                Email    = "*****@*****.**",
                Password = "******",
            };

            using var factory = new CustomWebApplicationFactory();
            var client = factory.CreateServiceClient <IIdentityServiceClient>();

            await SeedUser(client, "*****@*****.**", "Qwerty-Qwerty1");

            async Task CheckUserWithIncorrectPassword()
            {
                var incorrectRequest = new CheckUserRequest
                {
                    Email    = "*****@*****.**",
                    Password = "******",
                };

                var failedResponse = await client.CheckUserAsync(incorrectRequest);

                // Sanity check
                failedResponse.UserId.Should().BeEmpty();
                failedResponse.Errors.Should().NotBeEmpty();
            }

            await CheckUserWithIncorrectPassword();
            await CheckUserWithIncorrectPassword();
            await CheckUserWithIncorrectPassword();
            await CheckUserWithIncorrectPassword();

            // Act

            var response = await client.CheckUserAsync(correctRequest);

            // Assert

            response.UserId.Should().NotBeNullOrWhiteSpace();
            response.Errors.Should().BeEmpty();
        }
コード例 #7
0
        public override async Task <CheckUserReply> CheckUser(CheckUserRequest request, ServerCallContext context)
        {
            logger.LogInformation("Checking user {UserName} ...", request.Email);

            var failedCheckReply = new CheckUserReply
            {
                UserId = String.Empty,
                Errors =
                {
                    new IdentityServiceError
                    {
                        ErrorCode        = "IncorrectUserNameOrPassword",
                        ErrorDescription = "The user name or password is incorrect.",
                    },
                },
            };

            var user = await userManager.FindByNameAsync(request.Email);

            if (user == null)
            {
                logger.LogWarning("Check for user {UserName} has failed due to incorrect user name", request.Email);
                return(failedCheckReply);
            }

            var singInResult = await signInManager.CheckPasswordSignInAsync(user, request.Password, lockoutOnFailure : true);

            if (singInResult.Succeeded)
            {
                return(new CheckUserReply
                {
                    UserId = user.Id,
                });
            }

            logger.LogWarning("Check for user {UserName} has failed. IsLockedOut: {UserIsLockedOut}, IsNotAllowed: {UserInIsNotAllowed}", request.Email, singInResult.IsLockedOut, singInResult.IsNotAllowed);
            return(failedCheckReply);
        }
コード例 #8
0
        public async Task CheckUser_ForEmailInDifferentCase_CompletesSuccessfully()
        {
            // Arrange

            var request = new CheckUserRequest
            {
                Email    = "*****@*****.**",
                Password = "******",
            };

            using var factory = new CustomWebApplicationFactory();
            var client = factory.CreateServiceClient <IIdentityServiceClient>();

            await SeedUser(client, "*****@*****.**", "Qwerty-Qwerty1");

            // Act

            var response = await client.CheckUserAsync(request);

            // Assert

            response.UserId.Should().NotBeNullOrWhiteSpace();
            response.Errors.Should().BeEmpty();
        }