Exemplo n.º 1
0
        public ActionResult Register(RegisterValidateVM vm)
        {
            JournalUser journalUser = new JournalUser
            {
                RoleId = 2,//register a user
                FirstName = vm.Forename.ToLower(),
                LastName = vm.Surname.ToLower(),
                Email = vm.Email.ToLower()
            };
            var existing = from u in db.Users
                           where u.Email == vm.Email
                           select u;

            if (existing.Any())
            {
                ModelState.AddModelError("", "That email address is allready in use");
                TempData["failed"] = "failed";
                return View();
            }
            //adds a user to the bd and saves
            db.Users.Add(journalUser);
            db.SaveChanges();
            var user = db.Users.Single(c => c.Email == vm.Email.ToLower());
            // Hashes the password and set it in the user.
            user.Password = PasswordHasher.createHash(user.UserId, vm.Password);
            db.SaveChanges();
            //sending a mail
            MailFunction mail = new MailFunction();
            var callbackUrl = Url.Action("ConfirmAccount", "Home", new { userId = user.UserId }, protocol: Request.Url.Scheme);
            mail.sendEmail(user.Email, callbackUrl);
            ModelState.Clear();

            return View();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Method to validate JournalUser username and password
        /// </summary>
        /// <param name="username">username to validate</param>
        /// <param name="password">password to validate</param>
        /// <returns>true if valid</returns>
        private bool isValid(string username, string password)
        {
            bool isValid = false;

            //get JournalUser if equals to db content
            var user = db.Users.FirstOrDefault(u => u.Email == username);
            //if the user dont exist return false
            if (user == null)
            {
                ModelState.AddModelError("", "Username and/or password is wrong!");
                return isValid;
            }
            //if the account is confirmed and password is correct
            if (user.AccountConfirmed == 1)
            {
                if (user != null && PasswordHasher.validatePassword(user.UserId, password, user.Password))
                {
                    //set global user to user without storing password
                    this.user = db.Users.FirstOrDefault(u => u.Email == username);
                    this.user.Password = null;
                    this.user.Salts = null;
                    //set state as valid
                    isValid = true;
                }
                else
                {
                    //Shows state that username/password is worng
                    ModelState.AddModelError("", "Username and/or password is wrong!");
                }
            }
            else
            {
                //sending a mail
                MailFunction mail = new MailFunction();
                var callbackUrl = Url.Action("ConfirmAccount", "Home", new { userId = user.UserId }, protocol: Request.Url.Scheme);
                mail.sendEmail(user.Email, callbackUrl);
                //shows state that account is not confirmed
                ModelState.AddModelError("", "Account is not confirmed - a new email has been sent");
            }

            return isValid;
        }
Exemplo n.º 3
0
        public ActionResult Index(JournalUser journalUser)
        {
            //check model from view is valid or not
            if (ModelState.IsValid)
            {
                //if true
                if (isValid(journalUser.Email, journalUser.Password))
                {
                    //creates authorized session cookie for JournalUser
                    FormsAuthentication.SetAuthCookie(this.user.Email, true);

                    //return redirected view
                    //using this method just to make sure the auth-key was created upon login.
                    if (getSessionState() == true)
                    {
                        Session["SessionUser"] = this.user;
                        return RedirectToAction("LoggedIn", "Home");
                    }
                }
            }

            return View(journalUser);
        }