public override void DeleteNews(int id)
 {
     var context = new MyLifeEntities();
     var obj = new tblNews {Id = id};
     context.DeleteObject(obj);
     context.SaveChanges();
 }
 public override void UpdateNews(Web.News.News news)
 {
     var context = new MyLifeEntities();
     var obj = new tblNews {Id = news.Id};
     context.AttachTo("tblNews", obj);
     news.CopyToObject(obj);
     context.SaveChanges();
 }
 public override void DeleteLink(int id)
 {
     var context = new MyLifeEntities();
     var obj = new tblLinks {Id = id};
     context.AttachTo("tblLinks", obj);
     context.DeleteObject(obj);
     context.SaveChanges();
 }
 public override string[] FindUsersInRole(string roleName, string usernameToMatch)
 {
     var context = new MyLifeEntities();
     var list =
         context.tblRoles.Where(item => item.Name == roleName).SelectMany(item => item.Users).Where(
             item => item.UserName.Contains(usernameToMatch)).Select(item => item.UserName).ToList();
     return list.ToArray();
 }
 public override void UpdateLink(Link link)
 {
     var context = new MyLifeEntities();
     var obj = new tblLinks {Id = link.Id};
     context.AttachTo("tblLinks", obj);
     BizObject<Link, int>.CopyToObject(link, obj);
     context.SaveChanges();
 }
 public override int InsertNews(Web.News.News news)
 {
     var context = new MyLifeEntities();
     var obj = new tblNews();
     news.CopyToObject(obj);
     context.AddTotblNews(obj);
     context.SaveChanges();
     return obj.Id;
 }
 public override int InsertLink(Link link)
 {
     var context = new MyLifeEntities();
     var obj = new tblLinks();
     BizObject<Link, int>.CopyToObject(link, obj);
     context.AddTotblLinks(obj);
     context.SaveChanges();
     return obj.Id;
 }
 public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
 {
     var context = new MyLifeEntities();
     var obj = context.tblRoles.Where(item => item.Name == roleName).FirstOrDefault();
     if (obj != null)
     {
         if (throwOnPopulatedRole && obj.Users.Count() > 0)
         {
             throw new ProviderException("This role cannot be deleted because there are users present in it.");
         }
         context.DeleteObject(obj);
         context.SaveChanges();
         return true;
     }
     return false;
 }
        public override void CreateRole(string roleName)
        {
            SecUtility.CheckParameter(ref roleName, true, true, true, 255, "roleName");
            var context = new MyLifeEntities();
            var obj = new tblRoles {Name = roleName};
            context.AddTotblRoles(obj);

            try
            {
                context.SaveChanges();
            }
            catch (DbException)
            {
                throw new ProviderException(string.Format("The role '{0}' already exists.", roleName));
            }
        }
        public override void AddUsersToRoles(string[] usernames, string[] roleNames)
        {
            var context = new MyLifeEntities();
            var users =
                context.tblUsers.Include("Roles").Where(Utils.BuildContainsExpression<tblUsers, string>(item => item.UserName, usernames))
                    .ToList();
            var roles =
                context.tblRoles.Where(Utils.BuildContainsExpression<tblRoles, string>(item => item.Name, roleNames)).
                    ToList();

            foreach (var user in users)
            {
                user.Roles.Load();
                foreach (var role in roles)
                {
                    if (!user.Roles.Contains(role))
                    {
                        user.Roles.Add(role);
                    }
                }
            }
            context.SaveChanges();
        }
 public override int GetNumberOfUsersOnline()
 {
     var utc = DateTime.UtcNow.AddMinutes(-Membership.UserIsOnlineTimeWindow);
     var context = new MyLifeEntities();
     return context.tblUsers.Where(item => item.LastLoginDate >= utc).Count();
 }
 public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
 {
     var context = new MyLifeEntities();
     totalRecords = context.tblUsers.Count();
     var list = context.tblUsers.OrderBy(item => item.UserName).Skip(pageIndex*pageSize).Take(pageSize).ToList();
     return Convert(list);
 }
 public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize,
     out int totalRecords)
 {
     var context = new MyLifeEntities();
     totalRecords = context.tblUsers.Where(item => item.UserName.Contains(usernameToMatch)).Count();
     var list =
         context.tblUsers.Where(item => item.UserName.Contains(usernameToMatch)).OrderBy(item => item.UserName).
             Skip(
             pageIndex*pageSize).Take(pageSize).ToList();
     return Convert(list);
 }
 public override bool DeleteUser(string username, bool deleteAllRelatedData)
 {
     var context = new MyLifeEntities();
     var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
     if (user != null)
     {
         context.DeleteObject(user);
         context.SaveChanges();
         return true;
     }
     return false;
 }
        public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
        {
            if (providerUserKey == null)
            {
                throw new ArgumentNullException("providerUserKey");
            }

            if (!(providerUserKey is long))
            {
                throw new ArgumentException(
                    "The provider user key supplied is invalid.  It must be of type System.Int64.");
            }

            var context = new MyLifeEntities();
            var id = (long) providerUserKey;
            var user = context.tblUsers.Where(item => item.Id == id).FirstOrDefault();
            return Convert(user);
        }
 public override string GetUserNameByEmail(string email)
 {
     var context = new MyLifeEntities();
     var username =
         context.tblUsers.Where(item => item.Email == email).Select(item => item.UserName).FirstOrDefault();
     return username;
 }
 public override bool RoleExists(string roleName)
 {
     var context = new MyLifeEntities();
     return context.tblRoles.Count(item => item.Name == roleName) > 0;
 }
 public override bool IsUserInRole(string username, string roleName)
 {
     var context = new MyLifeEntities();
     return
         context.tblUsers.Where(item => item.UserName == username).SelectMany(item => item.Roles).Where(
             item => item.Name == roleName).Count() > 0;
 }
 public override string[] GetUsersInRole(string roleName)
 {
     var context = new MyLifeEntities();
     var list =
         context.tblRoles.Where(item => item.Name == roleName).SelectMany(item => item.Users).Select(
             item => item.UserName).ToList();
     return list.ToArray();
 }
        public override string GetPassword(string username, string answer)
        {
            if (!EnablePasswordRetrieval)
            {
                throw new NotSupportedException(
                    "This Membership Provider has not been configured to support password retrieval.");
            }

            SecUtility.CheckParameter(ref username, true, true, true, 255, "username");
            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user == null)
            {
                return null;
            }

            return UnEncodePassword(user.Password, user.PasswordFormat);
        }
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            SecUtility.CheckParameter(ref username, true, false, true, 255, "username");
            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user == null)
            {
                return null;
            }

            return Convert(user);
        }
        public override bool UnlockUser(string username)
        {
            SecUtility.CheckParameter(ref username, true, true, true, 255, "username");
            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            user.IsLockedOut = false;

            try
            {
                context.SaveChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }
 public MembershipUser GetUserByEmail(string email)
 {
     var context = new MyLifeEntities();
     var user = context.tblUsers.Where(item => item.Email == email).FirstOrDefault();
     return user == null ? null : Convert(user);
 }
        public override bool ValidateUser(string username, string password)
        {
            if (!SecUtility.ValidateParameter(ref username, true, true, true, 255))
                return false;

            if (!SecUtility.ValidateParameter(ref password, true, true, false, 128))
                return false;

            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user == null)
            {
                return false;
            }

            if (!user.IsApproved)
                return false;

            if (user.IsLockedOut)
                return false;

            var encodedPassword = EncodePassword(password.ToLowerInvariant(), user.PasswordFormat, user.PasswordSalt);
            var isPasswordCorrect = user.Password.Equals(encodedPassword);
            var dt = DateTime.UtcNow;

            if (isPasswordCorrect)
                user.LastLoginDate = dt;

            context.SaveChanges();

            return isPasswordCorrect;
        }
        public override string ResetPassword(string username, string answer)
        {
            if (!EnablePasswordReset)
            {
                throw new NotSupportedException(
                    "This provider is not configured to allow password resets. To enable password reset, set enablePasswordReset to \"true\" in the configuration file.");
            }

            SecUtility.CheckParameter(ref username, true, true, true, 255, "username");
            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user.IsLockedOut || !user.IsApproved)
                return null;

            var newPassword = GeneratePassword().ToLowerInvariant();
            var newEncodedPassword =
                EncodePassword(newPassword, user.PasswordFormat, user.PasswordSalt);
            var e = new ValidatePasswordEventArgs(username, newPassword, false);
            OnValidatingPassword(e);
            if (e.Cancel)
            {
                if (e.FailureInformation != null)
                {
                    throw e.FailureInformation;
                }
                throw new ProviderException("The custom password validation failed.");
            }

            user.Password = newEncodedPassword;
            user.LastPasswordChangedDate = DateTime.UtcNow;

            try
            {
                context.SaveChanges();
                return newPassword;
            }
            catch
            {
                return null;
            }
        }
 public override string[] GetAllRoles()
 {
     var context = new MyLifeEntities();
     var list = context.tblRoles.Select(item => item.Name).ToList();
     return list.ToArray();
 }
 public override void UpdateUser(MembershipUser user)
 {
     var temp = user.Email;
     SecUtility.CheckParameter(ref temp, true, true, false, 255, "Email");
     user.Email = temp;
     var context = new MyLifeEntities();
     var id = (int) user.ProviderUserKey;
     var obj = context.tblUsers.Where(item => item.Id == id).FirstOrDefault();
     if (requiresUniqueEmail)
     {
         obj = context.tblUsers.Where(item => item.Email == user.Email).FirstOrDefault();
         if (obj != null && !obj.UserName.Equals(user.UserName, StringComparison.InvariantCultureIgnoreCase))
         {
             throw new ArgumentException(Messages.DuplicateEmail);
         }
     }
     obj.Email = user.Email.ToLowerInvariant();
     obj.IsApproved = user.IsApproved;
     obj.LastLoginDate = user.LastLoginDate.ToUniversalTime();
     context.SaveChanges();
 }
 public override string[] GetRolesForUser(string username)
 {
     var context = new MyLifeEntities();
     var list =
         context.tblUsers.Where(item => item.UserName == username).SelectMany(item => item.Roles).Select(
             item => item.Name).ToList();
     return list.ToArray();
 }
        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            SecUtility.CheckParameter(ref username, true, true, true, 255, "username");
            SecUtility.CheckParameter(ref oldPassword, true, true, false, 128, "oldPassword");
            SecUtility.CheckParameter(ref newPassword, true, true, false, 128, "newPassword");

            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user == null)
            {
                return false;
            }

            var encodedOldPassword =
                EncodePassword(oldPassword.ToLowerInvariant(), user.PasswordFormat, user.PasswordSalt);

            if (!user.Password.Equals(encodedOldPassword))
            {
                return false;
            }

            if (newPassword.Length < MinRequiredPasswordLength)
            {
                throw new ArgumentException(
                    string.Format("The length of parameter '{0}' needs to be greater or equal to '{1}'.", "newPassword",
                                  MinRequiredPasswordLength));
            }

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

            if (count < MinRequiredNonAlphanumericCharacters)
            {
                throw new ArgumentException(
                    string.Format("Non alpha numeric characters in '{0}' needs to be greater than or equal to '{1}'.",
                                  "newPassword",
                                  MinRequiredNonAlphanumericCharacters.ToString(CultureInfo.InvariantCulture)));
            }

            if (PasswordStrengthRegularExpression.Length > 0)
            {
                if (!Regex.IsMatch(newPassword, PasswordStrengthRegularExpression))
                {
                    throw new ArgumentException(
                        string.Format(
                            "The parameter '{0}' does not match the regular expression specified in config file.",
                            "newPassword"));
                }
            }

            var encodedNewPassword =
                EncodePassword(newPassword.ToLowerInvariant(), user.PasswordFormat, user.PasswordSalt);
            if (encodedNewPassword.Length > 128)
            {
                throw new ArgumentException("The password is too long: it must not exceed 128 chars after encrypting.");
            }

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

            if (e.Cancel)
            {
                if (e.FailureInformation != null)
                {
                    throw e.FailureInformation;
                }
                throw new ArgumentException("The custom password validation failed.");
            }

            user.Password = encodedNewPassword;
            user.LastPasswordChangedDate = DateTime.UtcNow;

            try
            {
                context.SaveChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }
        public override MembershipUser CreateUser(string username, string password, string email,
            string passwordQuestion, string passwordAnswer, bool isApproved,
            object providerUserKey, out MembershipCreateStatus status)
        {
            if (!SecUtility.ValidateParameter(ref password, true, true, false, 128))
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            var salt = GenerateSalt();
            var encodedPassword = EncodePassword(password.ToLowerInvariant(), (int) PasswordFormat, salt);
            if (encodedPassword.Length > 128)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            string encodedPasswordAnswer;

            if (!string.IsNullOrEmpty(passwordAnswer))
            {
                passwordAnswer = passwordAnswer.Trim();
                if (passwordAnswer.Length > 128)
                {
                    status = MembershipCreateStatus.InvalidAnswer;
                    return null;
                }
                encodedPasswordAnswer = EncodePassword(passwordAnswer.ToLowerInvariant(), (int) PasswordFormat, salt);
            }
            else
            {
                encodedPasswordAnswer = passwordAnswer;
            }

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

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

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

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

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

            var count = 0;

            for (var 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;
                }
            }

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

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

            var context = new MyLifeEntities();
            var user = context.tblUsers.Where(item => item.UserName == username).FirstOrDefault();
            if (user != null)
            {
                status = MembershipCreateStatus.DuplicateUserName;
                return null;
            }

            if (RequiresUniqueEmail)
            {
                user = context.tblUsers.Where(item => item.Email == email).FirstOrDefault();
                if (user != null)
                {
                    status = MembershipCreateStatus.DuplicateEmail;
                    return null;
                }
            }

            user = new tblUsers
                       {
                           UserName = username.ToLowerInvariant(),
                           Password = encodedPassword,
                           PasswordFormat = ((int) PasswordFormat),
                           PasswordSalt = salt,
                           Email = email.ToLowerInvariant(),
                           IsApproved = isApproved,
                           IsLockedOut = false,
                           CreatedDate = DateTime.UtcNow,
                           LastLoginDate = Constants.DateTime.MinSqlDate,
                           LastPasswordChangedDate = Constants.DateTime.MinSqlDate,
                           LastLockoutDate = Constants.DateTime.MinSqlDate
                       };

            try
            {
                context.AddTotblUsers(user);
                context.SaveChanges();
                status = MembershipCreateStatus.Success;
                return Convert(user);
            }
            catch
            {
                status = MembershipCreateStatus.UserRejected;
            }
            return null;
        }