示例#1
0
		private async void mButtonLoginClick(object sender, EventArgs args)
		{
			//grab user info
			var email = FindViewById<EditText>(Resource.Id.txtLoginEmail).Text;
			var password = FindViewById<EditText>(Resource.Id.txtPassword).Text;

			// build model
			var model = new LoginBindingModel
			{
				Email = email,
				Password = password
			};

			try
			{
				// authenticate
			await RentProof.API.Service.Login(model);


				// proceed to main menu

			}
			catch (Exception)
			{
				throw;
			}
			var intent = new Intent(this, typeof (MainMenuController));
			StartActivity(intent);
			Finish();
		}
示例#2
0
        public async Task<IHttpActionResult> Login(LoginBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var user = UserManager.FindAsync(model.UserName, model.Password);

            if (user == null)
            {
                return this.BadRequest("Wrong username or password!");
            }

            // Invoke the "token" OWIN service to perform the login (POST /api/token)
            var testServer = TestServer.Create<Startup>();
            var requestParams = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("grant_type", "password"),
                new KeyValuePair<string, string>("username", model.UserName),
                new KeyValuePair<string, string>("password", model.Password)
            };

            var requestParamsFormUrlEncoded = new FormUrlEncodedContent(requestParams);

            var tokenServiceResponse = await testServer.HttpClient
                .PostAsync(Common.Constants.TokenEndpointPath, requestParamsFormUrlEncoded);

            return this.ResponseMessage(tokenServiceResponse);
        }
示例#3
0
        public HttpResponseMessage Login(LoginBindingModel login)
        {
            if (login.Username == "admin" && login.Password == "password")  //Do real auth
            {
                string role = "Librarian";
                var jwtToken = TokenManager.CreateJwtToken(login.Username, role);

                return new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ObjectContent<object>(new
                    {
                        UserName = login.Username,
                        Roles = role,
                        AccessToken = jwtToken
                    }, Configuration.Formatters.JsonFormatter)
                };
            }
            return new HttpResponseMessage(HttpStatusCode.BadRequest);
        }
        public async Task<ActionResult> Login(LoginBindingModel model, string returnUrl)
        {
            if (!this.ModelState.IsValid)
            {
                return this.View(model);
            }

            var result = await this.SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true);
            switch (result)
            {
                case SignInStatus.Success:
                    return this.RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return this.View("Lockout");
                default:
                    this.ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return this.View(model);
            }
        }
示例#5
0
        public async Task<HttpResponseMessage> LoginUser(LoginBindingModel loginData)
        {
            if (loginData == null)
            {
                loginData = new LoginBindingModel();
            }

            var request = HttpContext.Current.Request;
            var tokenServiceUrl = request.Url.GetLeftPart(UriPartial.Authority) +
                request.ApplicationPath + Startup.TokenEndpointPath;
            using (var client = new HttpClient())
            {
                var requestParams = new List<KeyValuePair<string, string>>
                {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username", loginData.Username),
                    new KeyValuePair<string, string>("password", loginData.Password)
                };
                var requestParamsFormUrlEncoded = new FormUrlEncodedContent(requestParams);
                var tokenServiceResponse = await client.PostAsync(tokenServiceUrl, requestParamsFormUrlEncoded);
                var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();
                var responseCode = tokenServiceResponse.StatusCode;

                if (responseCode == HttpStatusCode.OK)
                {
                    var jsSerializer = new JavaScriptSerializer();
                    var responseData =
                        jsSerializer.Deserialize<Dictionary<string, string>>(responseString);
                    var accessToken = responseData["access_token"];
                    var username = responseData["userName"];
                    this.userSessionManager.CreateUserSession(username, accessToken);

                    this.userSessionManager.RemoveExpiredSessions();
                }

                var responseMessage = new HttpResponseMessage(responseCode)
                {
                    Content = new StringContent(responseString, Encoding.UTF8, "application/json")
                };

                return responseMessage;
            }
        }
示例#6
0
 private User VerifyUser(LoginBindingModel loginModel)
 {
     return(this.Data.User.Query()
            .FirstOrDefault(u => u.Email == loginModel.Email && u.Password == loginModel.Password));
 }
示例#7
0
        public async Task <IHttpActionResult> LogIn(LoginBindingModel model)
        {
            try
            {
                _logger.Debug("ini LogIn - process");

                if (ModelState.IsValid)
                {
                    User user = await _appUserManager.FindByEmailAsync(model.Email);

                    if (user != null)
                    {
                        if (user.Disabled)
                        {
                            ModelState.AddModelError("", "Your account is disabled, please contact with the web master");
                            return(BadRequest(ModelState));
                        }

                        var validCredentials = await _appUserManager.FindAsync(user.UserName, model.Password);

                        // When a user is lockedout, this check is done to ensure that even if the credentials are valid
                        // the user can not login until the lockout duration has passed
                        if (await _appUserManager.IsLockedOutAsync(user.Id))
                        {
                            ModelState.AddModelError("", string.Format(
                                                         "Your account has been locked out for {0} minutes due to multiple failed login attempts.",
                                                         ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"]));
                        }
                        // if user is subject to lockouts and the credentials are invalid
                        // record the failure and check if user is lockedout and display message, otherwise,
                        // display the number of attempts remaining before lockout
                        else if (await _appUserManager.GetLockoutEnabledAsync(user.Id) && validCredentials == null)
                        {
                            // Record the failure which also may cause the user to be locked out
                            await _appUserManager.AccessFailedAsync(user.Id);

                            string message;

                            if (await _appUserManager.IsLockedOutAsync(user.Id))
                            {
                                message =
                                    string.Format(
                                        "Your account has been locked out for {0} minutes due to multiple failed login attempts.",
                                        ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"]);
                            }
                            else
                            {
                                int accessFailedCount = await _appUserManager.GetAccessFailedCountAsync(user.Id);

                                int attemptsLeft =
                                    Convert.ToInt32(
                                        ConfigurationManager.AppSettings["MaxFailedAccessAttemptsBeforeLockout"]) -
                                    accessFailedCount;

                                message =
                                    string.Format(
                                        "Invalid credentials. You have {0} more attempt(s) before your account gets locked out..",
                                        attemptsLeft);
                            }

                            ModelState.AddModelError("", message);
                        }
                        else if (validCredentials == null)
                        {
                            ModelState.AddModelError("", "Invalid credentials. Please try again.");
                        }
                        else
                        {
                            await _appUserManager.ResetAccessFailedCountAsync(user.Id);

                            var signInStatus = await _appSignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, false);

                            switch (signInStatus)
                            {
                            case SignInStatus.Success:
                            {
                                _logger.Debug("LogIn - Success");
                                _logger.Debug(string.Format("user LogIn info email:{0}, idUser:{1}", user.Email, user.Id));
                                return(Ok(ModelFactory.Create(user)));
                            }

                            case SignInStatus.Failure:
                            {
                                _logger.Debug("LogIn - Invalid password");
                                ModelState.AddModelError("", "Invalid credentials. Please try again");
                                break;
                            }
                            }
                        }
                    }
                    else
                    {
                        _logger.Debug("LogIn - invalid email.");
                        ModelState.AddModelError("", "Invalid credentials. Please try again");
                    }
                }

                _logger.Debug("LogIn - BadRequest.");
                return(BadRequest(ModelState));
            }
            catch (Exception ex)
            {
                LogError(ex);
                return(InternalServerError(ex));
            }
        }
示例#8
0
        public async Task <IHttpActionResult> Login(LoginBindingModel LoginModel)
        {
            var ctx = ApplicationDbContext.Create();

            if (string.IsNullOrWhiteSpace(LoginModel.username) || string.IsNullOrWhiteSpace(LoginModel.password))
            {
                return(NotFound());
            }

            var user = await AppUserManager.FindByNameAsync(LoginModel.username);

            if (user == null)
            {
                return(NotFound());
            }

            var passwordSignInResult = await AppUserManager.CheckPasswordAsync(user, LoginModel.password);

            if (!passwordSignInResult)
            {
                ctx.Login_Logs.Add(new Login_Logs()
                {
                    Ip_Address = Request.GetOwinContext().Request.RemoteIpAddress,
                    Status     = "The password is incorrect.",
                    Time       = DateTime.Now,
                    UserId     = user.Id,
                });
                await ctx.SaveChangesAsync();

                return(NotFound());
            }

            //Get Token from ~//oauth/token
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(Startup.address);
            client.DefaultRequestHeaders
            .Accept
            .Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");


            var json = new JavaScriptSerializer().Serialize(LoginModel);

            HttpResponseMessage response = await client.PostAsJsonAsync("/oauth/token", json);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                ctx.Login_Logs.Add(new Login_Logs()
                {
                    Ip_Address = Request.GetOwinContext().Request.RemoteIpAddress,
                    Status     = "Login Successful.",
                    Time       = DateTime.Now,
                    UserId     = user.Id,
                });
                await ctx.SaveChangesAsync();

                return(Ok(response.Content));
            }
            else
            {
                return(BadRequest(response.ReasonPhrase));
            }
        }
        public async Task<IHttpActionResult> Login(LoginBindingModel model)
        {
            if (this.User.Identity.GetUserId() != null)
            {
                return this.BadRequest("User is already logged in.");
            }

            if (model == null)
            {
                return this.BadRequest("Invalid user data.");
            }

            var testServer = TestServer.Create<Startup>();
            var requestParams = new List<KeyValuePair<string, string>>
                {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username", model.Username),
                    new KeyValuePair<string, string>("password", model.Password)
                };

            var requestParamsFormUrlEncoded = new FormUrlEncodedContent(requestParams);
            var tokenServiceResponse = await testServer.HttpClient.PostAsync(
                "/api/token", requestParamsFormUrlEncoded);

            if (tokenServiceResponse.StatusCode == HttpStatusCode.OK)
            {
                // Sucessful login --> create user session in the database
                var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();
                var jsSerializer = new JavaScriptSerializer();
                var responseData =
                    jsSerializer.Deserialize<Dictionary<string, string>>(responseString);
                var authToken = responseData["access_token"];
                var username = responseData["userName"];
                var owinContext = this.Request.GetOwinContext();
                var userSessionManager = new UserSessionManager(owinContext);
                userSessionManager.CreateUserSession(username, authToken);

                // Cleanup: delete expired sessions from the database
                userSessionManager.DeleteExpiredSessions();
            }

            return this.ResponseMessage(tokenServiceResponse);
        }
示例#10
0
 internal bool IsLoginModelValid(LoginBindingModel lbm)
 {
     return(this.Context.Users.Any(u => u.Email == lbm.Email && u.Password == lbm.Password));
 }
示例#11
0
        public async Task <JsonWebToken> Login(LoginBindingModel userModel)
        {
            var user = await LoginUser(userModel);

            return(_tokenService.CreateAccessToken(user.UserName, Guid.Parse(user.Id)));
        }
示例#12
0
 public User GetUserFromLoginBind(LoginBindingModel model)
 {
     return(this.Context.Users.FirstOrDefault(u => u.Username == model.Username &&
                                              u.Password == model.Password));
 }
        public async Task <ActionResult <LoginDto> > Login([FromBody] LoginBindingModel loginBm)
        {
            var response = await Mediator.Send(Mapper.Map <LoginQuery>(loginBm));

            return(Ok(response));
        }
示例#14
0
        public async Task <bool> SignIn(LoginBindingModel model)
        {
            var result = await this._signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : true);

            return(result.Succeeded);
        }