/// <summary> /// Получение Учетных данных на основании сущности из БД /// </summary> /// <param name="user">Сущность пользователь в БД</param> /// <returns>MembershipUser соответсвующий исходному User</returns> protected MembershipUser GetUser(Users user) { if (user == null || user.Deleted != null) return null; return new MembershipUser(Name , user.Login , user.User_id , user.Email , user.PasswordQuestion , user.Description , user.Activated , user.Blocked , user.Created , user.LastLoginDateTime ?? DateTime.MinValue , user.LastActivityDateTime ?? DateTime.MinValue , user.LastPasswordChangedDateTime ?? DateTime.MinValue , user.LastLockOutDateTime ?? DateTime.MinValue); }
/// <summary> /// Создает пользователя в БД /// </summary> /// <param name="username">Имя пользователя</param> /// <param name="password">Пароль пользователя</param> /// <param name="email">Email пользователя</param> /// <param name="passwordQuestion">Вопрос для восстановления пароля</param> /// <param name="passwordAnswer">Ответ для восстановления пароля</param> /// <param name="isApproved">Активирована ли учетная запись пользователя</param> /// <param name="providerUserKey">Идентификатор пользователя</param> /// <param name="status">Результат попытки создания пользователя</param> /// <returns>Учетные данные пользователя</returns> public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) { using (var context = new TicTacToeEntities()) { try { if (!ValidateLogin(username)) { status = MembershipCreateStatus.InvalidUserName; return null; } if (context.Users.Any(x=>x.Login == username)) { status = MembershipCreateStatus.DuplicateUserName; return null; } if (!ValidateEmail(email)) { status = MembershipCreateStatus.InvalidEmail; return null; } if (RequiresUniqueEmail && context.Users.Any(x => x.Email == email)) { status = MembershipCreateStatus.DuplicateEmail; return null; } var user = new Users { Login = username, PassHash = Common.EncryptPasswordSHA256(password), Email = email, Activated = !RequireActivation || isApproved, Roles = (int) RoleProvider.Roles.User, Created = DateTime.Now, PasswordQuestion = passwordQuestion, PasswordAnswer = passwordAnswer }; context.Users.Add(user); context.SaveChanges(); status = MembershipCreateStatus.Success; return GetUser(user); } catch (Exception ex) { this.GetLog().Error("User creation error", ex); status = MembershipCreateStatus.ProviderError; return null; } } }