public AccountCredentialsViewModel CreateNewUserAccount(RegisterUserBindingModel bm)
        {
            try
            {
                var passwordHashAndSalt = this.GenerateSaltedHash(bm.Password); // Returns byte[][] array of 2 elements(hashed password and salt)

                User newUser = new User();
                newUser.Name         = bm.Name;
                newUser.Email        = bm.Email;
                newUser.PasswordHash = Convert.ToBase64String(passwordHashAndSalt[0]);
                newUser.Salt         = Convert.ToBase64String(passwordHashAndSalt[1]);

                this.Context.Users.Add(newUser);
                this.Context.SaveChanges();
            }
            catch (Exception)
            {
                return(null);
            }

            // After user has been created login the user (return token)
            LoginUserBindingModel loginBm = new LoginUserBindingModel()
            {
                Email    = bm.Email,
                Password = bm.Password
            };

            var tokenBearer = LoginUser(loginBm);

            return(tokenBearer);
        }
Пример #2
0
        public IActionResult Login(LoginUserBindingModel model)
        {
            this.SetupLayoutHtml();

            if (!IsValidModel(model))
            {
                this.Model["message"] = "Invalid data in the fields!";
            }

            using (var db = new FDMCDbContext())
            {
                string passwordHash = PasswordUtilities.GetHash(model.Password);

                bool userIsValid = db.Users.Any(u => u.Username == model.Username && u.Password == passwordHash);

                if (!userIsValid)
                {
                    this.Model["message"] = "Invalid username or password!";

                    return(View());
                }

                this.SignIn(model.Username);

                return(new RedirectResult("/home/wellcome"));
            }
        }
Пример #3
0
 public User GetUserFromLoginBind(LoginUserBindingModel lubm)
 {
     return(this.Context.Users.FirstOrDefault(
                user =>
                (user.Username == lubm.Credential || user.Email == lubm.Credential) &&
                user.Password == lubm.Password));
 }
Пример #4
0
        public IActionResult Login(LoginUserBindingModel model, HttpSession session, HttpResponse response)
        {
            string username  = model.Username;
            string password  = model.Password;
            string sessionId = session.Id;

            using (NotesAppContext context = new NotesAppContext())
            {
                User user = context.Users.FirstOrDefault(u => u.Username == username && u.Password == password);
                if (user != null)
                {
                    Login login = new Login()
                    {
                        User      = user,
                        SessionId = sessionId,
                        IsActive  = true
                    };

                    context.Logins.Add(login);
                    context.SaveChanges();
                    Redirect(response, "/home/index");
                    return(null);
                }
            }

            return(View());
        }
Пример #5
0
        public IHttpActionResult LoginUser(LoginUserBindingModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Conflict());
                }

                var currentUser     = _userService.GetUserInfo(model.Email);
                var passwordRegForm = model.Password;
                var isPasswordEqual = Hashing.VerifyPassword(passwordRegForm, currentUser.Password);
                if (isPasswordEqual)
                {
                    return(Ok(currentUser));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (Exception)
            {
                return(Unauthorized());
            }
        }
Пример #6
0
        public IActionResult Login(LoginUserBindingModel bindingModel)
        {
            var user = this.context
                .Users
                .Select(u => new
                {
                    Username = u.Username,
                    Password = u.Password,
                    Email = u.Email,
                    Role = context.UserRoles.FirstOrDefault(r => r.Id == u.RoleId)
                })
                .FirstOrDefault(u => u.Username == bindingModel.username && u.Password == bindingModel.password);

            if (user != null)
            {
                this.SignIn(new IdentityUser()
                {
                    Username = user.Username,
                    Password = user.Password,
                    Email = user.Email,
                    Roles = new List<string>() {user.Role.Name}
                });
            }
            else
            {
                RedirectToAction("/users/register");
            }

            return RedirectToAction("/");
        }
Пример #7
0
        public async Task <HttpResponseMessage> LoginUser(LoginUserBindingModel model)
        {
            // Invoke the "token" OWIN service to perform the login: /api/token
            // Ugly hack: I use a server-side HTTP POST because I cannot directly invoke the service (it is deeply hidden in the OAuthAuthorizationServerHandler class)
            var request         = HttpContext.Current.Request;
            var tokenServiceUrl = request.Url.GetLeftPart(UriPartial.Authority) + request.ApplicationPath + "/Token";

            using (var client = new HttpClient())
            {
                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 client.PostAsync(tokenServiceUrl, requestParamsFormUrlEncoded);

                var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();

                var responseCode = tokenServiceResponse.StatusCode;

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

                return(responseMsg);
            }
        }
        public IActionResult Login(LoginUserBindingModel model)
        {
            if (this.User.IsAuthenticated)
            {
                return(this.RedirectToHome());
            }

            if (!this.IsValidModel(model))
            {
                this.ShowError("All fields required.");
                return(this.View());
            }

            var username = model.Username;
            var password = PasswordUtilities.GetPasswordHash(model.Password);

            var user = this.Context
                       .Users
                       .FirstOrDefault(u => u.Username == username && u.Password == password);

            if (user == null)
            {
                this.ShowError("Username or password invalid!");
                return(this.View());
            }

            var roles = this.Context
                        .Roles
                        .Where(r => r.UserId == user.Id)
                        .Select(r => r.Name);

            this.SignIn(user.Username, user.Id, roles);

            return(this.RedirectToHome());
        }
Пример #9
0
 public bool IsLoginModelValid(LoginUserBindingModel lubm)
 {
     return(this.Context.Users.Any(
                user =>
                (user.Username == lubm.Credential || user.Email == lubm.Credential) &&
                user.Password == lubm.Password));
 }
        public IActionResult Login(LoginUserBindingModel loginUserBindingModel)
        {
            if (loginUserBindingModel.Username == "" || loginUserBindingModel.Password == "")
            {
                this.Model["message"] = "Empty input fields !";
                return(View());
            }

            using (var context = new NotesDbContext())
            {
                var foundUser = context
                                .Users
                                .FirstOrDefault(u => u.Username == loginUserBindingModel.Username &&
                                                u.Password == PasswordUtilities.GenerateHash256(loginUserBindingModel.Password));

                if (foundUser == null)
                {
                    this.Model["message"] = "Invalid Username or password !";
                    return(View());
                }

                context.SaveChanges();
                this.SignIn(foundUser.Username);
            }

            return(RedirectToAction("/home/index"));
        }
Пример #11
0
        public IActionResult Login(LoginUserBindingModel model)
        {
            if (!this.IsValidModel(model))
            {
                this.Model.Data[ErrorKey]        = ShowMessageValue;
                this.Model.Data[ErrorMessageKey] = InvalidCredentialsMessage;
                return(View());
            }

            string hashedPass = PasswordUtilities.GenerateHash(model.Password);

            using (this.Context)
            {
                var user = this.Context.Users.FirstOrDefault(x => x.Username == model.Username && x.Password == hashedPass);

                if (user == null)
                {
                    this.Model.Data[ErrorKey]        = ShowMessageValue;
                    this.Model.Data[ErrorMessageKey] = InvalidCredentialsMessage;
                    return(this.View());
                }
                else
                {
                    this.SignIn(user.Username);
                    return(RedirectToHome());
                }
            }
        }
Пример #12
0
        public IActionResult Login(LoginUserBindingModel loginUserBindingModel)
        {
            if (loginUserBindingModel.Username == "" || loginUserBindingModel.Password == "")
            {
                this.Model["error"] = "<h1 class=\"message\">Empty input fields !</h1>";
                return(View());
            }

            var foundUser = this.Context
                            .Users
                            .FirstOrDefault(u => u.Username == loginUserBindingModel.Username &&
                                            u.Password == PasswordUtilities.GenerateHash256(loginUserBindingModel.Password));

            if (foundUser == null)
            {
                this.Model["error"] = "<h1 class=\"message\">Invalid Username or password !</h1>";
                return(View());
            }

            this.SignIn(foundUser.Username);
            this.User = new Authentication(foundUser.Username);

            Context.SaveChanges();

            return(RedirectToAction("/home/index"));
        }
Пример #13
0
        public User GetCorrespondingUser(LoginUserBindingModel model)
        {
            var user = Data.Data.Context.Users
                       .FirstOrDefault(x => x.Username == model.Username &&
                                       x.Password == model.Password);

            return(user);
        }
Пример #14
0
 public bool IsLoginModelValid(LoginUserBindingModel bind)
 {
     if (!this.Context.Users.Any(u => (u.Email == bind.Email) && u.Password == bind.Password))
     {
         return(false);
     }
     return(true);
 }
        public User GetCorrespondingUser(LoginUserBindingModel lubm)
        {
            var user = Data.Data.Context.Users.FirstOrDefault(
                user1 => user1.Username == lubm.Username &&
                user1.Password == lubm.Password);

            return(user);
        }
Пример #16
0
        public User GetCorrespondingLoginUser(LoginUserBindingModel lubm)
        {
            var user = this.Context.Users.FirstOrDefault(
                u => u.Username == lubm.Username &&
                u.Password == lubm.Password);

            return(user);
        }
Пример #17
0
 public IActionResult Login(LoginUserBindingModel model, HttpSession session, HttpResponse response)
 {
     if (this.service.IsUserValid(model))
     {
         this.service.LoginUser(model, session);
         this.Redirect(response, "/categories/all");
     }
     return(null);
 }
Пример #18
0
 public IActionResult Login(HttpSession session, HttpResponse response, LoginUserBindingModel lubm)
 {
     if (this.service.LoginUser(session, lubm))
     {
         this.Redirect(response, "/home/index");
         return(null);
     }
     return(this.View());
 }
Пример #19
0
 public bool IsUserValid(LoginUserBindingModel model)
 {
     if (this.Context.Users.Any(u => (u.Username == model.UsernameOrEmail ||
                                      u.Email == model.UsernameOrEmail) && u.Password == model.Password))
     {
         return(true);
     }
     return(false);
 }
Пример #20
0
        public IActionResult Login(LoginUserBindingModel lubm, HttpSession session, HttpResponse response)
        {
            if (this.usersService.LoginUser(lubm, session.Id))
            {
                Redirect(response, "/home/index");
                return(null);
            }

            return(this.View());
        }
Пример #21
0
 public IActionResult Login(HttpResponse response, HttpSession session, LoginUserBindingModel bindingModel)
 {
     service.LoginUser(session, bindingModel);
     if (!this.signInManager.IsAuthenticated(session))
     {
         return(this.View());
     }
     Redirect(response, "/games/all");
     return(null);
 }
        public async Task <HttpResponseMessage> LoginUser(LoginUserBindingModel model)
        {
            // Invoke the "token" OWIN service to perform the login: /api/token
            // Ugly hack: I use a server-side HTTP POST because I cannot directly invoke the service (it is deeply hidden in the OAuthAuthorizationServerHandler class)
            var request = HttpContext.Current.Request;
            //To use locally
            //var tokenServiceUrl = "http://127.0.0.1:61902/Token";
            var tokenServiceUrl = request.Url.GetLeftPart(UriPartial.Authority) + request.ApplicationPath + "/Token";


            using (var client = new HttpClient())
            {
                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 client.PostAsync(tokenServiceUrl, requestParamsFormUrlEncoded);

                var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();

                var responseCode = tokenServiceResponse.StatusCode;
                var responseMsg  = new HttpResponseMessage(responseCode)
                {
                    Content = new StringContent(responseString, Encoding.UTF8, "application/json")
                };
                if (responseCode == HttpStatusCode.OK)
                {
                    MitBudDBEntities mitBudDB = new MitBudDBEntities();

                    var Bodyresponse = mitBudDB.AspNetUsers.FirstOrDefault(X => X.Email == model.Username);

                    // Get the roles associated with that user
                    var userRoles = await UserManager.GetRolesAsync(Bodyresponse.Id.ToString());

                    // Setup a RoleViewModel list of roles and iterate through userRoles adding them to the list
                    List <RoleViewModel> roleList = new List <RoleViewModel>();
                    foreach (var role in userRoles)
                    {
                        var item = new RoleViewModel {
                            Role = role
                        };
                        roleList.Add(item);
                        //return Ok(item);
                        var res = responseMsg;
                    }
                }



                return(responseMsg);
            }
        }
Пример #23
0
        public void Login(LoginUserBindingModel loginModel, HttpResponse responce, HttpSession session)
        {
            if (this.RedirectLoggedUserToHome(responce, session))
            {
                return;
            }

            var location = this.usersService.LoginUser(loginModel, session, responce);

            this.Redirect(responce, location);
        }
        public AccountCredentialsViewModel LoginUser(LoginUserBindingModel bm)
        {
            string tokenBearer = string.Empty;
            Guid   userId      = Guid.Empty;
            string name        = string.Empty;
            string email       = string.Empty;

            try
            {
                var user = this.Context
                           .Users
                           .Where(u => u.Email == bm.Email)
                           .First();

                // taking the user data to send it to the client
                userId = user.Id;
                name   = user.Name;
                email  = user.Email;

                var passwordHash = GenerateHashOfPassword(bm.Password, user.Salt);

                if (user.PasswordHash == passwordHash)
                {
                    tokenBearer = GenerateToken();
                    TokenManager newToken = new TokenManager()
                    {
                        Value     = tokenBearer,
                        CreatedOn = DateTime.Now,
                    };
                    newToken.User = user;

                    this.Context.Tokens.Add(newToken);
                    this.Context.SaveChanges();
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return(null);
            }

            AccountCredentialsViewModel viewModel = new AccountCredentialsViewModel()
            {
                UserId = userId,
                Token  = tokenBearer,
                Name   = name,
                Email  = email
            };

            return(viewModel);
        }
        public IActionResult Login(HttpResponse response, HttpSession session, LoginUserBindingModel model)
        {
            User user = new UserService(this.context).LoginUser(model, response, session);

            if (user != null)
            {
                new SessionService(this.context).AddUserSession(user, session);
                return(View("Home", "Feedsigned"));
            }

            return(View());
        }
Пример #26
0
        public void LoginUser(LoginUserBindingModel model, HttpSession session)
        {
            this.Context.Logins.Add(new Login()
            {
                SessionId = session.Id,
                IsActive  = true,
                User      = this.Context.Users.FirstOrDefault(u => (u.Username == model.UsernameOrEmail ||
                                                                    u.Email == model.UsernameOrEmail) && u.Password == model.Password)
            });

            this.Context.SaveChanges();
        }
Пример #27
0
 public IHttpActionResult SendEmailForResettingPassword(LoginUserBindingModel model)
 {
     try
     {
         _userService.SendEmailForResettingPassword(model.Email);
         return(Ok());
     }
     catch (Exception)
     {
         return(BadRequest());
     }
 }
Пример #28
0
        public IActionResult Login(HttpResponse response, HttpSession session, LoginUserBindingModel model)
        {
            bool isLoginSuccessfull = new HomeService().LoginUser(model, session);

            if (!isLoginSuccessfull)
            {
                Redirect(response, "/home/login");
                return(null);
            }

            Redirect(response, "/users/home");
            return(null);
        }
        public IActionResult Login(HttpResponse response, HttpSession session, LoginUserBindingModel lubm)
        {
            var user = this.data.UsersRepository.FindUserByUserName(lubm.Username);

            if (user != null && user.Password == lubm.Password)
            {
                this.data.LoginRepository.CreateLogin(session.Id, user);
                this.data.SaveChanges();

                this.Redirect(response, "/home/feedSigned");
                return(null);
            }
            return(this.View());
        }
Пример #30
0
        public IActionResult Login(HttpResponse response, HttpSession session, LoginUserBindingModel model)
        {
            if (this.service.ContainsUser(model))
            {
                this.service.LoginUser(session, model);
                this.Redirect(response, "/home/all");
            }
            else
            {
                this.Redirect(response, "/users/login");
            }

            return(null);
        }
 public async Task<HttpResponseMessage> LoginUser(LoginUserBindingModel model)
 {
     // Invoke the "token" OWIN service to perform the login: /api/token
     // Ugly hack: I use a server-side HTTP POST because I cannot directly invoke the service (it is deeply hidden in the OAuthAuthorizationServerHandler class)
     var request = HttpContext.Current.Request;
     var tokenServiceUrl = request.Url.GetLeftPart(UriPartial.Authority) + request.ApplicationPath + "api/Account/Login";
     using (var client = new HttpClient())
     {
         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 client.PostAsync(tokenServiceUrl, requestParamsFormUrlEncoded);
         var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();
         var responseCode = tokenServiceResponse.StatusCode;
         var responseMsg = new HttpResponseMessage(responseCode)
         {
             Content = new StringContent(responseString, Encoding.UTF8, "application/json")
         };
         return responseMsg;
     }
 }
Пример #32
0
        public async Task<IHttpActionResult> LoginUser(LoginUserBindingModel model)
        {
            if (this.User.Identity.GetUserId() != null)
            {
                return this.BadRequest(UserAlreadyLoggedInMessage);
            }

            if (model == null)
            {
                return this.BadRequest(InvalidUserDataMessage);
            }

            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(
                Startup.TokenEndpointPath, requestParamsFormUrlEncoded);

            if (tokenServiceResponse.StatusCode == HttpStatusCode.OK)
            {
                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);

                userSessionManager.DeleteExpiredSessions();
            }

            return this.ResponseMessage(tokenServiceResponse);
        }
Пример #33
0
        public async Task<IHttpActionResult> LoginUser(LoginUserBindingModel model)
        {
            if (model == null)
            {
                return this.BadRequest("Invalid user data");
            }

            // Invoke the "token" OWIN service to perform the login (POST /api/token)
            // Use Microsoft.Owin.Testing.TestServer to perform in-memory HTTP POST request
            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(
                Startup.TokenEndpointPath, 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);
        }