Beispiel #1
0
        public void TestAdminLogin()
        {
            // Arrange
            var request          = new AdminLoginRequest("bar");
            var expectedResponse = new Response <TxSessionCredentials>(CREDENTIALS);

            var mockClient = new Mock <IAdminClient>();

            mockClient.Setup(client => client.Login(request))
            .Returns(expectedResponse.WithSuccess());

            // Act
            var adminController = new AdminController(
                requestFieldExtractor,
                mockClient.Object);

            var result   = adminController.AdminLogin(request) as OkObjectResult;
            var response = result.Value as Response <TxSessionCredentials>;

            // Assert
            Assert.NotNull(response);
            Assert.True(response.IsSuccessStatusCode);
            Assert.True(response.Payload.IsAdmin);
            Assert.Equal(expectedResponse.Payload, response.Payload);
        }
Beispiel #2
0
        public AjaxResult Index(AdminLoginRequest request)
        {
            AdminLoginResponse loginResponse = _systemService.AdminLogin(request);

            if (loginResponse.Result == RT.Success)
            {
                Result.IsOk = true;
                Result.Msg  = "登录成功!";

                var claimIdentity = new ClaimsIdentity("Cookie");
                claimIdentity.AddClaim(new Claim(ClaimTypes.Authentication, JsonConvert.SerializeObject(loginResponse.AuthList)));
                claimIdentity.AddClaim(new Claim(ClaimTypes.UserData, JsonConvert.SerializeObject(loginResponse.AdminInfo)));

                var claimsPrincipal = new ClaimsPrincipal(claimIdentity);
                // 在上面注册AddAuthentication时,指定了默认的Scheme,在这里便可以不再指定Scheme。
                HttpContext.SignInAsync(claimsPrincipal);
            }
            else if (loginResponse.Result == RT.Admin_NotExist_UserName)
            {
                Result.IsOk = false;
                Result.Msg  = "管理员名不存在!";
            }
            else if (loginResponse.Result == RT.Admin_Error_Password)
            {
                Result.IsOk = false;
                Result.Msg  = "密码不正确!";
            }
            return(Result);
        }
Beispiel #3
0
        /// <summary>
        /// 管理员登录
        /// </summary>
        /// <param name="request"></param>
        /// <param name="info"></param>
        /// <returns></returns>
        public AdminLoginResponse AdminLogin(AdminLoginRequest request)
        {
            AdminLoginResponse response = new AdminLoginResponse();
            AdminInfo          info     = GetModel <AdminInfo>(new { request.AdminName });

            if (info == null)
            {
                response.Result = RT.Admin_NotExist_UserName;
                return(response);
            }
            if (request.Password != RSADEncrypt.Decrypt(info.Password))
            {
                response.Result = RT.Admin_Error_Password;
                return(response);
            }
            //权限
            if (info.IsSuper)
            {
                response.AuthList = GetList <AuthInfo>();
            }
            else
            {
                response.AuthList = GetAdminAuth(info.ID);
            }
            //登录成功
            response.Result    = RT.Success;
            response.AdminInfo = info;
            return(response);
        }
        /// <summary>
        /// Verify Admin Login Details
        /// </summary>
        /// <param name="loginDetails">Admin Login Details</param>
        /// <returns>If data verified, return response data else ull or exception</returns>
        public async Task <RegistrationResponse> AdminLogin(AdminLoginRequest loginDetails)
        {
            try
            {
                RegistrationResponse responseData = null;
                loginDetails.Password = EncodeDecode.EncodePasswordToBase64(loginDetails.Password);
                SQLConnection();
                using (SqlCommand cmd = new SqlCommand("ValidateLogin", conn))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@Email", loginDetails.Email);
                    cmd.Parameters.AddWithValue("@Password", loginDetails.Password);
                    cmd.Parameters.AddWithValue("@UserRole", _admin);

                    conn.Open();
                    SqlDataReader dataReader = await cmd.ExecuteReaderAsync();

                    responseData = AdminRegistrationResponseModel(dataReader);
                };
                return(responseData);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="request">请求</param>
        public async Task <SignInWithTokenResult> SignInAsync(AdminLoginRequest request)
        {
            var user = await GetUserAsync(request.UserName);

            if (user == null)
            {
                return new SignInWithTokenResult {
                           Message = "用户名不存在", State = SignInState.Failed
                }
            }
            ;
            await AddClaimsToUserAsync(user, ApplicationCode.Admin);

            var result = await SignInManager.SignInAsync(user, request.Password);

            user.AddLoginLog(Web.IP, Web.Browser);
            await MessageEventBus.PublishAsync(new UserLoginMessageEvent(new UserLoginMessage
            {
                UserId = user.Id,
                Name = user.Nickname,
                Ip = Web.IP,
                UserAgent = Web.Browser
            }, false));

            await UnitOfWork.CommitAsync();

            return(await GetLoginResultAsync(user, result, ApplicationCode.Admin));
        }
Beispiel #6
0
        public async Task <BaseResponse> AdmainLogin(AdminLoginRequest request)
        {
            var adminInfo = await _bus.SendQuery <GetAdmainByEmail, Administrator> (new GetAdmainByEmail(request.Email));

            if (adminInfo == null || !string.Equals(request.Password.GetMd5Hash(), adminInfo.Password))
            {
                return(new BaseResponse(System.Net.HttpStatusCode.NotFound, "用户名或密码不正确"));
            }
            return(BaseResponse.Success());
        }
Beispiel #7
0
        public IActionResult AdminLogin([FromBody, Required] AdminLoginRequest request)
        {
            Response <TxSessionCredentials> response = adminService.Login(request);

            RequestPreconditions.CheckNotNull(response.Payload, "Payload");
            response.Payload.Validate();
            response.Payload.SetAdmin(true);
            requestFieldExtractor.StoreTomUserSessionCredentials(response.Payload);
            return(Ok(response));
        }
Beispiel #8
0
        public async Task <IActionResult> SignInAsync([FromBody] AdminLoginRequest request)
        {
            var result = await SecurityService.SignInAsync(request);

            if (result.State == SignInState.Succeeded)
            {
                return(Success(result.Token));
            }
            return(Fail(result.Message));
        }
Beispiel #9
0
        public Response <TxSessionCredentials> Login(AdminLoginRequest request)
        {
            var response = client.PostAsync(ADMIN_LOGIN, RequestSerializer.Content(request)).Result;

            if (response.IsSuccessStatusCode)
            {
                var userResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <Response <TxSessionCredentials> >(response.Content.ReadAsStringAsync().Result);
                return(userResponse);
            }
            return(new Response <TxSessionCredentials>(response.RequestMessage.ToString(), (int)response.StatusCode));
        }
Beispiel #10
0
        public async Task <IActionResult> Login([FromBody] AdminLoginRequest request)
        {
            var password = config?.AdministratorPassword ?? string.Empty;
            var username = request?.Username ?? string.Empty;

            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || !password.Equals(request?.Password, StringComparison.OrdinalIgnoreCase))
            {
                return(BadRequest());
            }

            await SignIn(username);

            return(Ok());
        }
        public async Task TestAdminLogin_WrongPostBodyCredentials()
        {
            // Arrange
            var request = new AdminLoginRequest("bar");

            // Act
            var client   = _testHostFixture.Client;
            var response = await client.PostAsync("/api/admin/login", RequestSerializer.Content(request));

            // Assert
            response
            .StatusCode
            .Should()
            .Be(HttpStatusCode.BadRequest);
        }
Beispiel #12
0
        public async Task <IActionResult> Login(AdminLoginRequest adminLoginRequest)
        {
            try
            {
                var loginResult = await _authenticationBL.HandleAdminLoginRequest(adminLoginRequest);

                return(Ok(loginResult));
            }
            catch (Exception exception)
            {
                const string message = "There was an error during login.";
                _logger.LogError(exception, message);
                return(StatusCode(500, message));
            }
        }
        public async Task TestAdminLogin()
        {
            // Arrange
            var request = new AdminLoginRequest("ToTheMoon2018");

            // Act
            var client   = _testHostFixture.Client;
            var response = await client.PostAsync("/api/admin/login", RequestSerializer.Content(request));

            // Assert
            response
            .StatusCode
            .Should()
            .Be(HttpStatusCode.OK);
        }
Beispiel #14
0
        public async Task <IActionResult> Login(AdminLoginRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ServiceResult <bool> result = await _adminService.LoginAsync(request);

            if (result.IsError)
            {
                ModelState.AddModelError("", "Invalid admin email or password");
                return(View("Login"));
            }

            return(RedirectToRoute("Home-Index"));
        }
 public async Task <AdminRegistrationResponse> AdminLogin(AdminLoginRequest loginDetails)
 {
     try
     {
         if (loginDetails == null)
         {
             return(null);
         }
         else
         {
             return(await _adminRepository.AdminLogin(loginDetails));
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="request">请求</param>
        public async Task <SignInWithTokenResult> SignInAsync(AdminLoginRequest request)
        {
            var user = await GetUserAsync(request.UserName);

            if (user == null)
            {
                return new SignInWithTokenResult {
                           Message = "用户名不存在", State = SignInState.Failed
                }
            }
            ;
            await AddClaimsToUserAsync(user, ApplicationCode.Admin);

            var result = await SignInManager.SignInAsync(user, request.Password);

            await UnitOfWork.CommitAsync();

            return(await GetLoginResultAsync(user, result, ApplicationCode.Admin));
        }
Beispiel #17
0
        public void TestAdminLogin_WrongPostBody()
        {
            // Arrange
            var request          = new AdminLoginRequest();
            var expectedResponse = new Response <TxSessionCredentials>();

            var mockClient = new Mock <IAdminClient>();

            mockClient.Setup(client => client.Login(request))
            .Returns(expectedResponse);

            // Act
            var adminController = new AdminController(
                requestFieldExtractor,
                mockClient.Object);
            Action act = () => adminController.AdminLogin(request);

            // Assert
            Assert.Throws <InvalidRequestException>(act);
        }
Beispiel #18
0
        public async Task <IActionResult> LoginAsync(AdminLoginRequest request)
        {
            var loginResult = await _adminAppService.AdmainLogin(request);

            if (loginResult.StatusCode != System.Net.HttpStatusCode.OK)
            {
                return(Ok(loginResult));
            }
            var claim = new List <Claim>()
            {
                new Claim(type: "Role", value: "Admin")
            };
            var identityUser = new IdentityServerUser(request.Email)
            {
                DisplayName      = request.Email.Split("@")[0],
                AdditionalClaims = claim
            };
            await HttpContext.SignInAsync(identityUser);

            return(Ok(DataResponse <string> .Success(HttpContext.Request.Cookies[_returnUrlKey])));
        }
Beispiel #19
0
        public IActionResult Login(AdminLoginRequest request)
        {
            //string validSession = HttpContext.Session.Get<string>("valid") ?? string.Empty; //将验证码从Session中取出来,用于登录验证比较
            //if (string.IsNullOrEmpty(validSession) || !valid.Trim().Equals(validSession, StringComparison.InvariantCultureIgnoreCase))
            //{
            //    return No("验证码错误");
            //}
            //HttpContext.Session.Remove("valid"); //验证成功就销毁验证码Session,非常重要

            if (string.IsNullOrEmpty(request.user_name.Trim()) || string.IsNullOrEmpty(request.password.Trim()))
            {
                return(No("用户名或密码不能为空"));
            }
            var adminDto = StoreUserService.Login(request.user_name, request.password).Mapper <AdminDto>();

            if (adminDto != null)
            {
                HttpContext.Session.Set(SessionKey.AdminInfo, adminDto);
                if (request.remember.Trim().Contains(new[] { "on", "true" })) //是否记住登录
                {
                    Response.Cookies.Append("admin_username", HttpUtility.UrlEncode(request.user_name.Trim()), new CookieOptions()
                    {
                        Expires = DateTime.Now.AddDays(7)
                    });
                    Response.Cookies.Append("admin_password", request.password.Trim().DesEncrypt(AppConfig.BaiduAK), new CookieOptions()
                    {
                        Expires = DateTime.Now.AddDays(7)
                    });
                }
                //HangfireHelper.CreateJob(typeof(IHangfireBackJob), nameof(HangfireBackJob.LoginRecord), "default", adminDto, HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(), LoginType.Default);
                string refer = Request.Cookies["refer"];
                //初始化系统设置参数
                CommonHelper.SystemSettings = SettingService.LoadEntities(l => l.wxapp_id == adminDto.wxapp_id).ToList().ToDictionary(s => s.key, s => JObject.Parse(s.values));
                return(YesRedirect("登陆成功!", string.IsNullOrEmpty(refer) ? "/" : refer));
            }
            return(No("用户名或密码错误"));
        }
Beispiel #20
0
        /// <summary>
        /// 管理员登录
        /// </summary>
        /// <param name="userlogin"></param>
        /// <returns></returns>
        public AdminLoginResponse AdminLogin(AdminLoginRequest request)
        {
            AdminLoginResponse response = new AdminLoginResponse();
            StaffModel         smodel   = new StaffModel()
            {
                StaffName  = request.AdminName,
                StaffPhone = request.AdminPhone,
                StaffPwd   = request.AdminPwd
            };
            //if (request == null || request.AdminName == null)
            //{
            //    response.Status = false;
            //    response.Message = "用户不能为空";
            //    return response;
            //}
            //if (request == null || request.AdminPwd == null)
            //{
            //    response.Status = false;
            //    response.Message = "密码不能为空";
            //    return response;
            //}
            var res = d.Administrator(smodel);

            if (!string.IsNullOrEmpty(res))
            {
                response.IsRegistSuccess = true;
                response.Aname           = res;
                response.Message         = "登录成功";
            }
            else
            {
                response.Status  = false;
                response.Message = "登录失败";
            }
            return(response);
        }
        public async Task <IActionResult> AdminLogin(AdminLoginRequest loginDetails)
        {
            try
            {
                var data = await _adminBusiness.AdminLogin(loginDetails);

                if (data != null)
                {
                    success = true;
                    message = "Admin Successfully Logged In";
                    token   = GenerateToken(data, "login");
                    return(Ok(new { success, message, data, token }));
                }
                else
                {
                    message = "No Admin Account Present with this Email-ID and Password";
                    return(NotFound(new { success, message }));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(new { ex.Message }));
            }
        }
Beispiel #22
0
 /// <summary>
 /// 管理员登录
 /// </summary>
 /// <param name="userRegistered"></param>
 /// <returns></returns>
 public AdminLoginResponse AdminLogin(AdminLoginRequest loginRequest)
 {
     return(ApiRequestHelper.Post <AdminLoginRequest, AdminLoginResponse>(loginRequest));
 }
Beispiel #23
0
        public async Task <AdminLoginResult> HandleAdminLoginRequest(AdminLoginRequest adminLoginRequest)
        {
            var admin = await _authenticationRepository.GetAdmin(
                adminLoginRequest.FirstName,
                adminLoginRequest.LastName
                );

            if (admin == null)
            {
                return new AdminLoginResult
                       {
                           Details = new ResultDetails
                           {
                               Message      = "User not found.",
                               ResultStatus = ResultStatus.Failure
                           }
                       }
            }
            ;

            if (adminLoginRequest.Password == null)
            {
                return new AdminLoginResult
                       {
                           Details = new ResultDetails
                           {
                               Message      = "Password was not provided.",
                               ResultStatus = ResultStatus.Failure
                           }
                       }
            }
            ;

            var correctPassword = ValidatePassword(adminLoginRequest.Password, admin.PasswordHash);

            if (!correctPassword)
            {
                return new AdminLoginResult
                       {
                           Details = new ResultDetails
                           {
                               Message      = "The password was incorrect.",
                               ResultStatus = ResultStatus.Failure
                           }
                       }
            }
            ;


            var token = GenerateToken(admin);

            return(new AdminLoginResult
            {
                Data = token,
                Details = new ResultDetails
                {
                    Message = "Successful login.",
                    ResultStatus = ResultStatus.Success
                }
            });
        }
Beispiel #24
0
        public async Task <ServiceResult <bool> > LoginAsync(AdminLoginRequest request)
        {
            if (request == null ||
                string.IsNullOrWhiteSpace(request.Email) ||
                string.IsNullOrWhiteSpace(request.Password))
            {
                return(new ServiceResult <bool>(HttpStatusCode.BadRequest));
            }

            SignInResult result = await _signInManager.PasswordSignInAsync(request.Email,
                                                                           request.Password, isPersistent : false, lockoutOnFailure : false);

            if (!result.Succeeded)
            {
                return(new ServiceResult <bool>(HttpStatusCode.Unauthorized));
            }

            UserEntity userEntity = await _userManager.FindByEmailAsync(request.Email);

            if (userEntity == null)
            {
                // This situation may arise when the  user is deleted in another thread
                return(new ServiceResult <bool>(HttpStatusCode.Unauthorized));
            }

            List <Claim> claims = new List <Claim>
            {
                new Claim(ClaimTypes.Email, request.Email),
                new Claim("FullName", $"{userEntity.FirstName} {userEntity.LastName}"),
                new Claim(ClaimTypes.Role, "Administrator"),
            };

            ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims,
                                                               CookieAuthenticationDefaults.AuthenticationScheme);

            AuthenticationProperties authProperties = new AuthenticationProperties
            {
                //AllowRefresh = <bool>,
                // Refreshing the authentication session should be allowed.

                //ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(10),
                // The time at which the authentication ticket expires. A
                // value set here overrides the ExpireTimeSpan option of
                // CookieAuthenticationOptions set with AddCookie.

                //IsPersistent = true,
                // Whether the authentication session is persisted across
                // multiple requests. When used with cookies, controls
                // whether the cookie's lifetime is absolute (matching the
                // lifetime of the authentication ticket) or session-based.

                //IssuedUtc = <DateTimeOffset>,
                // The time at which the authentication ticket was issued.

                //RedirectUri = <string>
                // The full path or absolute URI to be used as an http
                // redirect response value.
            };

            await _httpContextAccessor.HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                new ClaimsPrincipal(claimsIdentity),
                authProperties);

            //_logger.LogInformation("user {Email} logged in at {Time}." user.Email, DateTime.UtcNow);
            return(new ServiceResult <bool>(true));
        }
Beispiel #25
0
 public JsonResult AdminLogin(AdminLoginRequest request)
 {
     return(Json(b.AdminLogin(request)));
 }
        public IActionResult AdminLogin(AdminLoginRequest request)
        {
            _authenticationService.AdminLogin(request.Username, request.Password);

            return(Ok());
        }
Beispiel #27
0
 public Response <TxSessionCredentials> Login(AdminLoginRequest request)
 {
     return(adminClient.Login(request));
 }
 public AdminLoginResponse AdminLogin(AdminLoginRequest request)
 {
     return(userBll.AdminLogin(request));
 }