public ActionResult Create(EventViewModel eventViewModel)
        {
            if (ModelState.IsValid)
            {
                Event entity = new Event();
                entity.Name = eventViewModel.Name;
                context.Events.AddObject(entity);
                context.SaveChanges();

                return(RedirectToAction("Index"));
            }
            return(View(eventViewModel));
        }
Exemple #2
0
        private bool CheckPassword(NotificatorEntities db, string username, string password, bool updateLastLoginActivityDate, bool failIfNotApproved, out string salt, out int passwordFormat, out User usr)
        {
            var user = GetDBUser(db, username);

            usr = user;
            if (user == null)
            {
                salt           = null;
                passwordFormat = -1;

                return(false);
            }

            var enc = EncodePassword(password, user.PasswordFormat, user.PasswordSalt);

            passwordFormat = user.PasswordFormat;
            salt           = user.PasswordSalt;
            if (enc == user.Password)
            {
                if (updateLastLoginActivityDate)
                {
                    user.LastActivityDate = DateTime.Now;
                    user.LastLoginDate    = DateTime.Now;

                    db.SaveChanges();
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #3
0
        public override void UpdateUser(System.Web.Security.MembershipUser user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            string temp = user.UserName;

            SecurityUtils.CheckParameter(ref temp, true, true, true, 256, "UserName");
            temp = user.Email;
            SecurityUtils.CheckParameter(ref temp,
                                         RequiresUniqueEmail,
                                         RequiresUniqueEmail,
                                         false,
                                         256,
                                         "Email");
            user.Email = temp;

            using (var db = new NotificatorEntities())
            {
                var query = from u in db.Users
                            where u.Id == (int)user.ProviderUserKey && u.Application.Id == applicationId
                            select u;

                var usr = query.FirstOrDefault();
                if (usr == null)
                {
                    throw new ProviderException(GetExceptionText(1));
                }

                if (RequiresUniqueEmail)
                {
                    var q = from u in db.Users
                            where u.Id != (int)user.ProviderUserKey &&
                            u.Email == user.Email && u.Application.Id == applicationId
                            select u;

                    if (q.Any())
                    {
                        throw new ProviderException(GetExceptionText(7));
                    }
                }

                usr.Email         = user.Email;
                usr.Comment       = user.Comment;
                usr.IsApproved    = user.IsApproved;
                usr.LastLoginDate = user.LastLoginDate;

                db.SaveChanges();
            }
        }
        internal static int GetApplicationId(this NotificatorEntities data, string applicationName)
        {
            var application = data.GetApplicationByName(applicationName).FirstOrDefault();

            if (application == null)
            {
                application = new Application {
                    Name = applicationName
                };
                data.Applications.AddObject(application);
                data.SaveChanges();
            }

            return(application.Id);
        }
Exemple #5
0
        public override bool DeleteUser(string username, bool deleteAllRelatedData)
        {
            using (var db = new NotificatorEntities())
            {
                var user = db.Users.FirstOrDefault(u => u.Username == username && u.Application.Id == applicationId);
                if (user == null)
                {
                    return(false);
                }

                db.DeleteObject(user);
                db.SaveChanges();

                return(true);
            }
        }
Exemple #6
0
 public override System.Web.Security.MembershipUser GetUser(string username, bool userIsOnline)
 {
     using (var db = new NotificatorEntities())
     {
         var usr = GetDBUser(db, username);
         if (usr == null)
         {
             return(null);
         }
         if (userIsOnline)
         {
             usr.LastActivityDate = DateTime.UtcNow;
             db.SaveChanges();
         }
         return(UserMapper.Map(this.Name, usr));
     }
 }
Exemple #7
0
 public override System.Web.Security.MembershipUser GetUser(object providerUserKey, bool userIsOnline)
 {
     using (var db = new NotificatorEntities())
     {
         var uid = (int)providerUserKey;
         var usr = db.GetUserById(uid, applicationId).FirstOrDefault();
         if (usr == null)
         {
             return(null);
         }
         if (userIsOnline)
         {
             usr.LastActivityDate = DateTime.UtcNow;
             db.SaveChanges();
         }
         return(UserMapper.Map(this.Name, usr));
     }
 }
Exemple #8
0
        public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
        {
            using (var db = new NotificatorEntities())
            {
                var    user = default(User);
                string salt; int passwordFormat;
                if (!CheckPassword(db, username, password, false, false, out salt, out passwordFormat, out user))
                {
                    return(false);
                }

                user.PasswordQuestion = newPasswordQuestion;
                user.PasswordAnswer   = newPasswordAnswer;

                db.SaveChanges();
                return(true);
            }
        }
Exemple #9
0
        public override bool UnlockUser(string userName)
        {
            SecurityUtils.CheckParameter(ref userName, true, true, true, 256, "username");
            try
            {
                using (var db = new NotificatorEntities())
                {
                    var user = GetDBUser(db, userName);
                    if (user == null)
                    {
                        return(false);
                    }

                    user.Status          = (byte)UserStatus.Approved;
                    user.LastLockoutDate = DateTime.UtcNow;

                    db.SaveChanges();
                    return(true);
                }
            }
            catch { return(false); }
        }
Exemple #10
0
        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            var salt           = string.Empty;
            var passwordFormat = 1;

            using (var db = new NotificatorEntities())
            {
                var user = default(User);
                if (!CheckPassword(db, username, oldPassword, false, false, out salt, out passwordFormat, out user))
                {
                    return(false);
                }

                user.Password = EncodePassword(newPassword, passwordFormat, salt);
                user.LastPasswordChangedDate          = DateTime.Now;
                user.FailedPasswordAnswerAttemptCount = 0;
                user.FailedPasswordAttemptCount       = 0;

                db.SaveChanges();
            }
            return(true);
        }
Exemple #11
0
        public override string ResetPassword(string username, string answer)
        {
            if (!EnablePasswordReset)
            {
                throw new NotSupportedException("Not_configured_to_support_password_resets");
            }

            SecurityUtils.CheckParameter(ref username, true, true, true, 256, "username");

            using (var db = new NotificatorEntities())
            {
                var user           = GetDBUser(db, username);
                var passwordAnswer = user.PasswordAnswer;

                string encodedPasswordAnswer;
                if (passwordAnswer != null)
                {
                    passwordAnswer = passwordAnswer.Trim();
                }
                if (!string.IsNullOrEmpty(passwordAnswer))
                {
                    encodedPasswordAnswer = EncodePassword(passwordAnswer.ToLower(CultureInfo.InvariantCulture), user.PasswordFormat, user.PasswordSalt);
                }
                else
                {
                    encodedPasswordAnswer = passwordAnswer;
                }
                SecurityUtils.CheckParameter(ref encodedPasswordAnswer, RequiresQuestionAndAnswer, RequiresQuestionAndAnswer, false, 128, "passwordAnswer");
                string newPassword = GeneratePassword();

                ValidatePasswordEventArgs e = new ValidatePasswordEventArgs(username, newPassword, false);
                OnValidatingPassword(e);

                if (e.Cancel)
                {
                    if (e.FailureInformation != null)
                    {
                        throw e.FailureInformation;
                    }
                    else
                    {
                        throw new ProviderException("Membership_Custom_Password_Validation_Failure");
                    }
                }

                var utc = DateTime.UtcNow;
                if (encodedPasswordAnswer != user.PasswordAnswer)
                {
                    if (utc > user.FailedPasswordAnswerAttemptWindowStart.AddMinutes(PasswordAttemptWindow))
                    {
                        user.FailedPasswordAnswerAttemptCount = 1;
                    }
                    else
                    {
                        user.FailedPasswordAnswerAttemptCount++;
                    }
                    user.FailedPasswordAnswerAttemptWindowStart = utc;

                    if (user.FailedPasswordAnswerAttemptCount > MaxInvalidPasswordAttempts)
                    {
                        user.LastLockoutDate = DateTime.UtcNow;
                        user.Status          = (byte)UserStatus.Locked;
                    }

                    db.SaveChanges();
                    return(null);
                }
                else
                {
                    user.FailedPasswordAnswerAttemptCount       = 0;
                    user.FailedPasswordAnswerAttemptWindowStart = new DateTime(1754, 01, 01);

                    user.FailedPasswordAttemptCount       = 0;
                    user.FailedPasswordAttemptWindowStart = user.FailedPasswordAnswerAttemptWindowStart;
                }

                user.Password = EncodePassword(newPassword, user.PasswordFormat, user.PasswordSalt);
                db.SaveChanges();

                return(newPassword);
                //user.FailedPasswordAnswerAttemptCount = 0;
            }
        }
Exemple #12
0
        public override System.Web.Security.MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status)
        {
            if (!ValidateParameter(ref password, true, true, false, 128))
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            var salt = GenerateSalt();
            var pass = EncodePassword(password, (int)passwordFormat, salt);

            if (pass.Length > 128)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            string encodedPasswordAnswer;

            if (passwordAnswer != null)
            {
                passwordAnswer = passwordAnswer.Trim();
            }

            if (!string.IsNullOrEmpty(passwordAnswer))
            {
                if (passwordAnswer.Length > 128)
                {
                    status = MembershipCreateStatus.InvalidAnswer;
                    return(null);
                }
                encodedPasswordAnswer = EncodePassword(passwordAnswer.ToLower(CultureInfo.InvariantCulture), (int)passwordFormat, salt);
            }
            else
            {
                encodedPasswordAnswer = passwordAnswer;
            }

            if (!ValidateParameter(ref encodedPasswordAnswer, RequiresQuestionAndAnswer, true, false, 128))
            {
                status = MembershipCreateStatus.InvalidAnswer;
                return(null);
            }

            if (!ValidateParameter(ref username, true, true, true, 256))
            {
                status = MembershipCreateStatus.InvalidUserName;
                return(null);
            }

            if (!ValidateParameter(ref email,
                                   RequiresUniqueEmail,
                                   RequiresUniqueEmail,
                                   false,
                                   256))
            {
                status = MembershipCreateStatus.InvalidEmail;
                return(null);
            }

            if (!ValidateParameter(ref passwordQuestion, RequiresQuestionAndAnswer, true, false, 256))
            {
                status = MembershipCreateStatus.InvalidQuestion;
                return(null);
            }

            if (providerUserKey != null)
            {
                //if (!(providerUserKey is Guid)) {
                //    status = MembershipCreateStatus.InvalidProviderUserKey;
                //    return null;
                //}
                status = MembershipCreateStatus.InvalidProviderUserKey;
                return(null);
            }

            if (password.Length < MinRequiredPasswordLength)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            int count = 0;

            for (int i = 0; i < password.Length; i++)
            {
                if (!char.IsLetterOrDigit(password, i))
                {
                    count++;
                }
            }

            if (count < MinRequiredNonAlphanumericCharacters)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            if (PasswordStrengthRegularExpression.Length > 0)
            {
                if (!Regex.IsMatch(password, PasswordStrengthRegularExpression))
                {
                    status = MembershipCreateStatus.InvalidPassword;
                    return(null);
                }
            }


            ValidatePasswordEventArgs e = new ValidatePasswordEventArgs(username, password, true);

            OnValidatingPassword(e);

            if (e.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            using (var db = new NotificatorEntities())
            {
                if (RequiresUniqueEmail)
                {
                    if (db.Users.Where(u => u.Email == email && u.Application.Id == applicationId).Any())
                    {
                        status = MembershipCreateStatus.DuplicateEmail;
                        return(null);
                    }
                }

                if (db.Users.Where(u => u.Username == username && u.Application.Id == applicationId).Any())
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                    return(null);
                }

                var utc  = DateTime.UtcNow;
                var user = new User()
                {
                    Comment  = "",
                    CreateOn = utc,
                    Email    = email,
                    FailedPasswordAnswerAttemptCount       = 0,
                    FailedPasswordAnswerAttemptWindowStart = utc,
                    FailedPasswordAttemptCount             = 0,
                    FailedPasswordAttemptWindowStart       = utc,
                    IsAnonymous             = false,
                    IsApproved              = isApproved,
                    LastActivityDate        = utc,
                    LastLockoutDate         = utc,
                    LastLoginDate           = utc,
                    LastPasswordChangedDate = utc,
                    Password         = pass,
                    PasswordAnswer   = encodedPasswordAnswer,
                    PasswordFormat   = (int)PasswordFormat,
                    PasswordQuestion = passwordQuestion,
                    PasswordSalt     = salt,
                    TimeZone         = 0,
                    Username         = username,
                    Application      = db.GetApplication(applicationId)
                };

                db.Users.AddObject(user);
                try
                {
                    db.SaveChanges();
                }
                catch
                {
                    status = MembershipCreateStatus.UserRejected;
                    return(null);
                }

                status = MembershipCreateStatus.Success;
                return(UserMapper.Map(this.Name, user));
            }
        }