Example #1
0
        public IUserIdentity GetUserFromAccessToken(Guid token)
        {
            UserLoginSession userLoginSession = GetUserSessionFromToken(token);

            MakeSureTokenHasntExpiredYet(userLoginSession);
            return(new LoggedInUserIdentity(userLoginSession));
        }
Example #2
0
        /// <summary>
        /// Create new session during login
        /// </summary>
        string IUserManager.CreateSession(CreateNewSession SessionModel)
        {
            var found = SessionModel;

            if (found != null)
            {
                //Context.UserLoginSessions.Where(p => p.UserId == model.UserId).ToList().ForEach(p => { p.SessionExpired = true; });
                Context.UserLoginSessions.Where(p => p.UserId == SessionModel.UserID).ToList().ForEach(p => { p.SessionExpired = true; p.DeviceToken = null; p.LoggedOutTime = DateTime.UtcNow; p.IsActive = false; });
                //Context.UserLoginSessions.Where(p => p.UniqueDeviceId == SessionModel.UniqueDeviceId).ToList().ForEach(p => { p.SessionExpired = true; p.DeviceToken = null; p.LoggedOutTime = DateTime.UtcNow; p.IsActive = false; });
                Context.SaveChanges();

                var session = new UserLoginSession()
                {
                    LoggedInTime       = DateTime.Now,
                    SessionExpired     = false,
                    UserId             = found.UserID,
                    UserLoginSessionID = Guid.NewGuid(),
                    UniqueDeviceId     = SessionModel.UniqueDeviceId,
                    DeviceToken        = SessionModel.DeviceToken,
                    DeviceType         = SessionModel.DeviceType,
                    LastActivityTime   = DateTime.UtcNow,
                    IsActive           = true
                };
                Context.UserLoginSessions.Add(session);
                Context.SaveChanges();
                return(session.UserLoginSessionID.ToString());
            }
            else
            {
                return(string.Empty);
            }
        }
Example #3
0
        public ActionResult Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                var dao    = new LoginDao();
                var result = dao.Login(model.UserName, Encryptor.MD5Hash(model.PassWord));
                if (result == "Success")
                {
                    var user        = dao.GetUserByID(model.UserName);
                    var userSession = new UserLoginSession();

                    userSession.UserName = user.Name_User;
                    userSession.UserID   = user.Id_User;
                    Session.Add(Constant.USER_SESSION, userSession);

                    return(RedirectToAction("Index", "Home"));
                }
                else if (result == "InCorrect")
                {
                    ModelState.AddModelError("", "Tài Khoản hoặc mật khẩu không chính xác");
                }
                else if (result == "Locked")
                {
                    ModelState.AddModelError("", "Tài Khoản đã bị khóa");
                }
            }

            return(View("Index"));
        }
Example #4
0
        public CookieContainer CreateLoginCookieContainer(UserLoginSession session)
        {
            var container = new CookieContainer();
            var cookie    = new Cookie("user_session", session.SessionKey, "/", "nicovideo.jp");

            container.Add(new Uri("http://api.ce.nicovideo.jp"), cookie);
            return(container);
        }
Example #5
0
        void MakeSureTokenHasntExpiredYet(UserLoginSession userLoginSession)
        {
            DateTime expires = userLoginSession.Expires;
            DateTime now     = _timeProvider.Now();

            if (expires < now)
            {
                throw new TokenExpiredException();
            }
        }
        public UserLoginSession Create(User executor)
        {
            DateTime dateTime = _tokenExpirationProvider.GetExpiration(_timeProvider.Now());
            Guid     token    = _identityGenerator.Generate();

            var userSession = new UserLoginSession(token, executor, dateTime);

            _writeableRepository.Create(userSession);

            return(userSession);
        }
Example #7
0
        // captures the login session, sending the user data to local database
        // sets the app as logged in and updates the main menu
        public async void captureLoginSession(LoginResponse loginResponse)
        {
            var userSessionInformation = new UserLoginSession
            { // object to send into local database
                UserUid   = loginResponse.Result.Result[0].UserUid,
                FirstName = loginResponse.Result.Result[0].FirstName,
                SessionId = loginResponse.LoginAttemptLog.SessionId,
                LoginId   = loginResponse.LoginAttemptLog.LoginId,
                Email     = loginResponse.Result.Result[0].UserEmail
            };

            await App.Database.SaveItemAsync(userSessionInformation); // send login session to local database

            System.Diagnostics.Debug.WriteLine("user logged in: " + App.Database.GetLastItem().Email);
            App.setLoggedIn(true);
            MainPage mainPage = (MainPage)Navigation.NavigationStack[0];
            //mainPage.updateLoginButton();
        }
Example #8
0
        public ActionResult Login(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                var dao = new UserDao();
                var res = dao.Login(model.UserName, Encryptor.MD5Hash(Encryptor.EncodeTo64(model.Password)), true);
                if (res == 1)
                {
                    var user        = dao.GetUserExist(model.UserName);
                    var userSession = new UserLoginSession();
                    userSession.UserName    = user.UserName;
                    userSession.UserID      = user.ID;
                    userSession.UserGroupID = user.UserGroupID;
                    userSession.Name        = user.Name;
                    var listCredentials = dao.GetListCredential(model.UserName);

                    Session.Add(ConstantSession.SESSION_CREDENTIALS, listCredentials);
                    Session.Add(ConstantSession.USER_SESSION, userSession);
                    ViewBag.UserName = ((UserLoginSession)Session[ConstantSession.USER_SESSION]).UserName;
                    return(RedirectToAction("Index", "Default"));
                }
                else if (res == 0)
                {
                    ModelState.AddModelError("", "Tài khoản không tồn tại!");
                }
                else if (res == -1)
                {
                    ModelState.AddModelError("", "Tài khoản đang tạm khóa!");
                }
                else if (res == -2)
                {
                    ModelState.AddModelError("", "Mật khẩu không đúng!");
                }
                else if (res == -3)
                {
                    ModelState.AddModelError("", "Tài khoản bạn không có quyền truy cập trang này!");
                }
            }
            else
            {
                ModelState.AddModelError("", "Vui lòng nhập đầy đủ thông tin");
            }
            return(View("Index"));
        }
Example #9
0
        public ActionResult Login(LoginModel loginModel)
        {
            if (ModelState.IsValid)
            {
                var userService = new UserService();
                var result      = userService.Login(loginModel.Username, Encryptor.MD5Hash(loginModel.Password));

                if (result == 1)
                {
                    var user        = userService.GetUserBy(loginModel.Username);
                    var userSession = new UserLoginSession()
                    {
                        UserId   = user.Id,
                        Username = user.Username
                    };
                    Session.Add(Constants.USER_SESSION, userSession);
                    return(RedirectToAction("Index", "Home"));
                }
                else if (result == 0)
                {
                    ModelState.AddModelError(string.Empty, "Account not exist");
                }
                else if (result == -1)
                {
                    ModelState.AddModelError(string.Empty, "Account is locked");
                }
                else if (result == -2)
                {
                    ModelState.AddModelError(string.Empty, "Wrong password");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid Login");
                }
            }
            return(View("Index"));
        }
Example #10
0
        public LoginModule(IPasswordEncryptor passwordEncryptor, IReadOnlyRepository readOnlyRepository,
                           IUserSessionFactory userSessionFactory, IMenuProvider menuProvider)
        {
            Post["/login"] =
                _ =>
            {
                var loginInfo = this.Bind <LoginRequest>();
                if (loginInfo.Email == null)
                {
                    throw new UserInputPropertyMissingException("Email");
                }
                if (loginInfo.Password == null)
                {
                    throw new UserInputPropertyMissingException("Password");
                }

                EncryptedPassword encryptedPassword = passwordEncryptor.Encrypt(loginInfo.Password);

                try
                {
                    var user =
                        readOnlyRepository.First <UserEmailLogin>(
                            x => x.Email == loginInfo.Email && x.EncryptedPassword == encryptedPassword.Password);

                    if (!user.IsActive)
                    {
                        throw new DisableUserAccountException();
                    }
                    UserLoginSession userLoginSession = userSessionFactory.Create(user);

                    return(new SuccessfulLoginResponse <Guid>(userLoginSession.Id, user.Name,
                                                              userLoginSession.Expires, menuProvider.getFeatures(userLoginSession.GetClaimsAsArray())));
                }
                catch (ItemNotFoundException <UserEmailLogin> )
                {
                    throw new UnauthorizedAccessException("Invalid email address or password. Please try again.");
                }
                catch (DisableUserAccountException)
                {
                    throw new UnauthorizedAccessException("Your account has been disabled. Please contact your administrator for help.");
                }
            };

            Post["/login/facebook"] = _ =>
            {
                var loginInfo = this.Bind <LoginSocialRequest>();
                if (loginInfo.Email == null)
                {
                    throw new UserInputPropertyMissingException("Email");
                }
                if (loginInfo.Id == null)
                {
                    throw new UserInputPropertyMissingException("Social Id");
                }

                try
                {
                    var user =
                        readOnlyRepository.First <UserFacebookLogin>(
                            x => x.Email == loginInfo.Email && x.FacebookId == loginInfo.Id);

                    if (!user.IsActive)
                    {
                        throw new DisableUserAccountException();
                    }

                    UserLoginSession userLoginSession = userSessionFactory.Create(user);

                    return(new SuccessfulLoginResponse <Guid>(userLoginSession.Id, user.Name, userLoginSession.Expires, menuProvider.getFeatures(userLoginSession.GetClaimsAsArray())));
                }
                catch (ItemNotFoundException <UserEmailLogin> )
                {
                    throw new UnauthorizedAccessException("Invalid facebook user, you need to register first.");
                }
                catch (DisableUserAccountException)
                {
                    throw new UnauthorizedAccessException("Your account has been disabled. Please contact your administrator for help.");
                }
            };
            Get["/roles"] =
                _ =>
            {
                this.RequiresAuthentication();
                return(Response.AsJson(menuProvider.getAllFeatures()));
            };


            Post["/login/google"] = _ =>
            {
                var loginInfo = this.Bind <LoginSocialRequest>();
                if (loginInfo.Email == null)
                {
                    throw new UserInputPropertyMissingException("Email");
                }
                if (loginInfo.Id == null)
                {
                    throw new UserInputPropertyMissingException("Social Id");
                }

                try
                {
                    var user =
                        readOnlyRepository.First <UserGoogleLogin>(
                            x => x.Email == loginInfo.Email && x.GoogleId == loginInfo.Id);

                    if (!user.IsActive)
                    {
                        throw new DisableUserAccountException();
                    }

                    UserLoginSession userLoginSession = userSessionFactory.Create(user);

                    return(new SuccessfulLoginResponse <Guid>(userLoginSession.Id, user.Name, userLoginSession.Expires, menuProvider.getFeatures(userLoginSession.GetClaimsAsArray())));
                }
                catch (ItemNotFoundException <UserEmailLogin> )
                {
                    throw new UnauthorizedAccessException("Invalid google user, you need to register first.");
                }
                catch (DisableUserAccountException)
                {
                    throw new UnauthorizedAccessException("Your account has been disabled. Please contact your administrator for help.");
                }
            };
        }
Example #11
0
        public ActionResult Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                var username = model.UserName;
                var password = model.PassWord;

                var dao    = new LoginDao();
                var result = dao.Login(username, Encryptor.MD5Hash(password));
                if (result == "Succeed")
                {
                    var user = dao.GetUserByID(username);

                    var userSession = new UserLoginSession
                    {
                        UserName = user.Name_User,
                        UserID   = user.Id_User
                    };

                    Session["UserId"] = user.Id_User;
                    Session.Add(Constant.USER_SESSION, userSession);

                    //Farmer:1 , Trader:2 , Admin:3

                    // ChenLong
                    //if (user.USER_KIND.Id_UserKind == 1)
                    //{
                    //    return RedirectToAction("Index", "Farmer", new { area = "Farmer" });
                    //}
                    //if (user.USER_KIND.Id_UserKind == 3)
                    //{
                    //    return RedirectToAction("index", "User", new { area = "Admin" });
                    //}

                    //return RedirectToAction("Index", "Home");

                    // Meow Edited
                    if (user.USER_KIND.Id_UserKind == 1)
                    {
                        Session["FarmerId"] = new FarmerDAO().GetFarmerByUserID(user.Id_User).Id_Farmer;
                        return(RedirectToAction("Index", "Farmer", new { area = "Farmer" }));
                    }
                    else if (user.USER_KIND.Id_UserKind == 2)
                    {
                        Session["TraderId"] = new TraderDAO().GetTraderByUserID(user.Id_User).Id_Trader;
                        return(RedirectToAction("Index", "Trader"));
                    }
                    else if (user.USER_KIND.Id_UserKind == 3)
                    {
                        return(RedirectToAction("Index", "User", new { area = "Admin" }));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else if (result == "InCorrect")
                {
                    ModelState.AddModelError("", ErrorList.LOGIN_WRONGPASS);
                }
                else if (result == "Locked")
                {
                    ModelState.AddModelError("", ErrorList.LOGIN_LOCKED);
                }
            }

            return(View("LoginIndex"));
        }