public async Task ValidateThrowsWithNull() { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); var validator = new UserValidator<TestUser>(); // Act // Assert await Assert.ThrowsAsync<ArgumentNullException>("manager", () => validator.ValidateAsync(null, null)); await Assert.ThrowsAsync<ArgumentNullException>("user", () => validator.ValidateAsync(manager, null)); }
public async Task ValidateFailsWithTooShortUserNames(string input) { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); var validator = new UserValidator<TestUser>(); var user = new TestUser {UserName = input}; // Act var result = await validator.ValidateAsync(manager, user); // Assert IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.InvalidUserName(input)); }
public async Task ValidateFailsWithTooShortUserNames(string input) { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); var validator = new UserValidator<TestUser>(); var user = new TestUser {UserName = input}; // Act var result = await validator.ValidateAsync(manager, user); // Assert IdentityResultAssert.IsFailure(result, "UserName cannot be null or empty."); }
private IKernel BuildNinjectKernel() { var storageAccount = CloudConfigurationManager.GetSetting("MvcMusicStore.Storage.Account"); var queueName = CloudConfigurationManager.GetSetting("MvcMusicStore.Storage.QueueName"); var connectionString = CloudConfigurationManager.GetSetting("MvcMusicStore.Mongodb.Connectionstring"); var database = CloudConfigurationManager.GetSetting("MvcMusicStore.Mongodb.Database"); var mongoClient = new MongoClient(connectionString); var mongoServer = mongoClient.GetServer(); var mongoDatabase = mongoServer.GetDatabase(database); var kernel = new StandardKernel(); kernel.Bind<MongoDatabase>() .ToConstant(mongoDatabase); kernel.Bind<ICartStoreService>() .To<SessionCartStoreService>(); kernel.Bind( x => x.FromAssemblyContaining(typeof (PlaceOrderCommandHandler)) .SelectAllClasses() .BindAllInterfaces()); kernel.Bind<ICache>() .To<AzureCache>(); var userManager = new UserManager<ApplicationUser>( new UserStore<ApplicationUser>( new ApplicationDbContext())); var userValidator = new UserValidator<ApplicationUser>(userManager) { AllowOnlyAlphanumericUserNames = false }; userManager.UserValidator = userValidator; kernel.Bind<UserManager<ApplicationUser>>().ToMethod(cfg => userManager); kernel.Bind<IBus>() .To<Bus>() .InSingletonScope() .WithConstructorArgument("kernel", kernel) .WithConstructorArgument("connectionString", storageAccount) .WithConstructorArgument("queue", queueName); return kernel; }
static void Main(string[] args) { string str = "2年15年09月06日"; System.Console.WriteLine(str.IndexOf('年', 3)); System.Console.WriteLine(str.IndexOf('月', 7)); System.Console.WriteLine(str.IndexOf('日', 9)); System.Console.WriteLine("12345678".IndexOf("3", 2, 1, StringComparison.CurrentCulture)); System.Console.Read(); var user = new User() { UserName = "", Account = "" }; var validator = new UserValidator(); var context = new ValidationContext<User>( user, new PropertyChain(), new RulesetValidatorSelector(new string[]{ "LoginRule", "AddRule" })); var results = validator.Validate(context); if (!results.IsValid) { System.Console.WriteLine(QJsonConvert.Serialize(user)); // 遍历所有失败的信息 foreach (var failure in results.Errors) { System.Console.WriteLine("验证失败的 Property {0}, 错误信息: {1}".QFormat( failure.PropertyName, failure.ErrorMessage)); } } System.Console.ReadKey(); }
public ValidationModule() { Get ["/validation/user/validate-exists-username"] = x => { return Response.AsJson<bool>(true); }; Get ["/validation/user/validate-exists-email"] = x => { var user = new User(); var q = DeserializeQueryString(Request.Query["*"]); user.Username = q.Username; user.FirstName = q.FirstName; user.LastName = q.LastName; user.Email = q.Email; var result = new UserValidator().Validate(user, y => y.Email); if (result.IsValid) { return Response.AsJson<bool>(true); } return Response.AsJson<bool>(false); }; }
static void Main(string[] args) { UserRepo userRepo = new UserRepo(); ArticleRepo articleRepo = new ArticleRepo(); AuthorRepo authorRepo = new AuthorRepo(); UserValidator userValidator = new UserValidator(); ArticleValidator articleValidator = new ArticleValidator(); AuthorValidator authorValidator = new AuthorValidator(); userRepo.SetValidator(userValidator); articleRepo.SetValidator(articleValidator); authorRepo.SetValidator(authorValidator); Manager manager = new Manager(userRepo, authorRepo, articleRepo); ConsoleUI console = new ConsoleUI(manager); console.Run(); }
public void Adds_valid_entities_to_repositories() { friendlyUrlGen.Expect(x => x.GenerateUrl(Arg<string>.Is.Anything, Arg<string[]>.Is.Anything)).Return("aaaa"). Repeat. Any(); var blogValidator = new BlogValidator(); var postValidator = new PostValidator(); var userValidator = new UserValidator(); blogRP.Expect(x => x.SaveBlog(Arg<Blog>.Is.Anything)) .Do(new Expect<Blog>(blogValidator.ValidateAndThrowException)); userRP.Expect(x => x.SaveUser(Arg<User>.Is.Anything)) .Do(new Expect<User>(userValidator.ValidateAndThrowException)); postRP.Expect(x => x.SavePost(Arg<Post>.Is.Anything)) .Do(new Expect<Post>(postValidator.ValidateAndThrowException)); var installer = new DefaultStartupInstaller(blogRP, postRP, userRP, friendlyUrlGen); installer.Execute(); }
public async Task DefaultAlphaNumericOnlyUserNameValidation(string userName, bool expectSuccess) { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); var validator = new UserValidator<TestUser>(); var user = new TestUser {UserName = userName}; // Act var result = await validator.ValidateAsync(manager, user); // Assert if (expectSuccess) { IdentityResultAssert.IsSuccess(result); } else { IdentityResultAssert.IsFailure(result); } }
public async Task CanAllowNonAlphaNumericUserName(string userName, bool expectSuccess) { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); manager.Options.User.AllowOnlyAlphanumericNames = false; var validator = new UserValidator<TestUser>(); var user = new TestUser {UserName = userName}; // Act var result = await validator.ValidateAsync(manager, user); // Assert if (expectSuccess) { IdentityResultAssert.IsSuccess(result); } else { IdentityResultAssert.IsFailure(result); } }
static void Main(string[] args) { try { EmailValidator emailValidator = new EmailValidator(); EmailRepository emailRepository = new EmailRepository(emailValidator, "emails.xml"); UserValidator userValidator = new UserValidator(); UserRepository userRepository = new UserRepository(userValidator,"users.xml"); //userRepository.save(new User("admin","admin")); //userRepository.save(new User("narcis", "narcis")); Service service = new Service(emailRepository, userRepository); ConsoleUi console = new ConsoleUi(service); console.run(); } catch (Exception e) { Console.WriteLine("something went wrong {0}",e.Message); Console.ReadKey(); } }
public void Configuration(IAppBuilder builder) { builder.CreatePerOwinContext <DbContext>(() => new IdentityDbContext <UsuarioAplicacao>("DefaultConnection")); builder.CreatePerOwinContext <IUserStore <UsuarioAplicacao> >((options, contextoOwin) => { var dbContext = contextoOwin.Get <DbContext>(); return(new UserStore <UsuarioAplicacao>(dbContext)); }); builder.CreatePerOwinContext <UserManager <UsuarioAplicacao> >((options, contextoOwin) => { var userStore = contextoOwin.Get <IUserStore <UsuarioAplicacao> >(); var userManager = new UserManager <UsuarioAplicacao>(userStore); var userValidator = new UserValidator <UsuarioAplicacao>(userManager) { RequireUniqueEmail = true }; userManager.UserValidator = userValidator; userManager.PasswordValidator = new SenhaValidador { TamanhoRequerido = 6, ObrigatorioCaracteresEspeciais = true, ObrigatorioDigitos = true, ObrigatorioLowerCase = true, ObrigatorioUpperCase = true }; userManager.EmailService = new EmailServico(); userManager.UserTokenProvider = new DataProtectorTokenProvider <UsuarioAplicacao>(options.DataProtectionProvider.Create("ByteBank.Forum")); return(userManager); }); }
public ApplicationUserManager(IUserStore <ApplicationUser> store, IDataProtectionProvider dataProtectionProvider) : base(store) { UserValidator = new UserValidator <ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords PasswordValidator = new PasswordValidator { //RequiredLength = 6, //RequireNonLetterOrDigit = true, //RequireDigit = true, //RequireLowercase = true, //RequireUppercase = true, }; // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user // You can write your own provider and plug it in here. RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider <ApplicationUser> { MessageFormat = "Your security code is {0}" }); RegisterTwoFactorProvider("Email Code", new EmailTokenProvider <ApplicationUser> { Subject = "Security Code", BodyFormat = "Your security code is {0}" }); UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); }
public void Should_Not_Have_Error_When_Roles_Not_Unique_But_Exists_In_Deleted_Roles() { //Arrange var unitOfWork = _serviceProvider.GetService <IUnitOfWork>(); var validator = new UserValidator(unitOfWork, _localizer); var model = new UserModel { DisplayName = "نام", UserName = "******", Roles = new List <UserRoleModel> { new UserRoleModel { Id = 1, RoleId = 1 }, new UserRoleModel { Id = 2, RoleId = 1, TrackingState = TrackingState.Deleted }, new UserRoleModel { Id = 3, RoleId = 2 } } }; //Act var result = validator.Validate(model); //Assert result.Errors.ShouldNotContain(x => x.ErrorMessage == "User.Fields.Roles.Unique"); }
private async void SubmitBtn_Click(object sender, RoutedEventArgs e) { if (!UserValidator.CheckLogin(loginBox.Text)) { MessageBox.Show(UserValidator.CheckLoginMessage()); return; } if (!UserValidator.CheckPassword(passBox.Password)) { MessageBox.Show(UserValidator.CheckPasswordMessage()); return; } if (!UserValidator.CheckKey(keyBox.Password)) { MessageBox.Show(UserValidator.CheckKeyMessage()); return; } string res = await service.LoginAsync(loginBox.Text, passBox.Password, keyBox.Password); if (res != "") { token = res; login = loginBox.Text; key = keyBox.Password; MessageBox.Show("Ви увійшли!"); this.DialogResult = true; this.Close(); } else { MessageBox.Show("Неправильний логін або пароль"); } }
public void Configuration(IAppBuilder builder) { builder.CreatePerOwinContext <DbContext>(() => new IdentityDbContext <UsuarioAplicacao>("TreinamentoAspNetCoreIdentityConnection")); builder.CreatePerOwinContext <IUserStore <UsuarioAplicacao> >( (opcoes, contextoOwin) => { var _context = contextoOwin.Get <DbContext>(); return(new UserStore <UsuarioAplicacao>(_context)); }); builder.CreatePerOwinContext <UserManager <UsuarioAplicacao> >( (opcoes, contextoOwin) => { var userStore = contextoOwin.Get <IUserStore <UsuarioAplicacao> >(); var userManager = new UserManager <UsuarioAplicacao>(userStore); //adicionado validacoes do usuario atraves do Owin var userValidator = new UserValidator <UsuarioAplicacao>(userManager); userValidator.RequireUniqueEmail = true; //nao permite cadastro com emails duplicados //Adiciona ao user manager as validacoes do usuário userManager.UserValidator = userValidator; //Adiciona validacao da senha userManager.PasswordValidator = new ValidadorSenha() { TamanhoSenhaRequerido = 6, ObrigatorioCaracteresEspecias = true }; return(userManager); }); }
public AppUserManager(IUserStore <AppUser, Guid> userStore, IServiceLogger logger) : base(userStore) { _logger = logger; ClaimsIdentityFactory = new AppClaimIdentityFactory(); UserValidator = new UserValidator <AppUser, Guid>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true, }; PasswordValidator = new PasswordValidator() { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = true, RequireLowercase = true, RequireUppercase = true, }; UserTokenProvider = new EmailTokenProvider <AppUser, Guid>(); }
public IHttpActionResult GetUser(int id) { loggedInUser = GetLoggedInUser(); Entity.Models.User userEntity = db.Users.FirstOrDefault(u => u.CompanyId == loggedInUser.CompanyId && u.Id == id); if (userEntity == null) { return NotFound(); } var userDto = Mapper.Map<Entity.Models.User, Dto.Models.User>(userEntity); GenerateUserPhotoLink(userDto); ValidationResult userValidatorResult = new UserValidator().Validate(userDto, ruleSet: "default,NoPassword"); if (!userValidatorResult.IsValid) { return new ValidatorError("Error mapping user DTO from database", HttpStatusCode.InternalServerError, userValidatorResult, Request); // I can also do something like this: //return ResponseMessage( new ValidatorError("Error mapping user DTO from database", HttpStatusCode.InternalServerError, userValidatorResult, Request).Response); } return Ok(userDto); }
public ActionResult Registration(User user) { var userval = new UserValidator(); if (ModelState.IsValid && userval.Validate(user).IsValid) { var hashhelper = new HashHelper(); user.IsAdmin = false; user.Password = hashhelper.Hash(user.Password); user.ValidationToken = TokenGenerator.GenerateValidationToken(validationTokenSize); userRepository.InsertUser(user); userRepository.Save(); ModelState.Clear(); ViewBag.Message = user.FirstName + " " + user.LastName + " " + "wurde erfolgreich registriert!"; EmailHelper.SendMail("smtp.gmail.com", "*****@*****.**", "noreplyASP", user.Email, "Willkommen bei Pim-Suite!", "Herzlich Willkiomen in der PIM-Suite!\nBitte klicken Sie auf den Link um Ihre Registrierung abzuschließen: " + Request.Url.GetLeftPart(UriPartial.Authority) + "/Registration/Validation?token=" + user.ValidationToken + " \nSollte der Link nicht funktionieren, kopieren Sie Ihn in die Adresszeile Ihres Browsers.\n\nWir wünschen viel Spaß mit Ihrer PIM-Suite"); Response.Redirect("/?infoMessage=A validation link has been sent to your mail-address, please check your mails and click the link to validate!"); } else { string errors = string.Join("\n", userval.Validate(user).Errors); ViewBag.Message = errors; } return(View()); }
public User SignUpArtist(string name, string password, string email, List <GenreModelForSelector> genres) { using (var unitOfWork = new UnitOfWork()) { var userRepository = unitOfWork.GetRepository <User>(); if (userRepository.GetAll().Where(usr => usr.Email == email).Count() != 0) { throw new InvalidModelException("Exista deja un utilizator cu aceasta adresa de email."); } var artistRepository = unitOfWork.GetRepository <Artist>(); var genreRepository = unitOfWork.GetRepository <Genre>(); User user = new User { Name = name, Password = password, Email = email, Role = 1 }; UserValidator userValidator = new UserValidator(); var checkResult = userValidator.Check(user); if (checkResult.Count != 0) { throw new InvalidModelException(String.Join("\n", checkResult.ToArray())); } User addedUser = userRepository.Add(user); unitOfWork.Save(); List <Genre> mappedGenres = new List <Genre>(); foreach (var genre in genres) { var foundGenre = genreRepository.Find(genre.id); addedUser.Genres.Add(foundGenre); } FileOperations.SaveGenreDataToFile(); artistRepository.Add(new Artist { ArtistId = addedUser.Id, PictureUrl = "/images/user.jpg" }); unitOfWork.Save(); return(addedUser); } }
public void CreateIt() { //var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<SproutEntities>())); // Configure validation logic for usernames UserValidator = new UserValidator <ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = true, RequireLowercase = true, RequireUppercase = true, }; // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user // You can write your own provider and plug it in here. RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider <ApplicationUser> { MessageFormat = "Your security code is {0}" }); RegisterTwoFactorProvider("Email Code", new EmailTokenProvider <ApplicationUser> { Subject = "Security Code", BodyFormat = "Your security code is {0}" }); EmailService = new EmailService(); SmsService = new SmsService(); }
public async Task SignUpAsync(Guid id, string email, string password, string role = Role.User) { var user = await _userRepository.GetAsync(email); if (user != null) { throw new DSNException(Codes.EmailInUse, $"Email {email} is already in use"); } if (string.IsNullOrWhiteSpace(role)) { role = Role.User; } user = new User(id, email, role); user.SetPassword(password, _passwordHasher); var validator = new UserValidator(); var valid = await validator.ValidateAsync(user); if (!valid.IsValid) { throw new DSNException("User is invalid"); } await _userRepository.AddAsync(user); }
public string Login([FromBody] RegisterViewModel loginViewModel) { var users = DatabaseContext.Users(); var userPasswordHash = users .Find(new BsonDocument { { "email", loginViewModel.Email } }) .FirstOrDefault() .Password; var userValidator = new UserValidator(loginViewModel.Password, userPasswordHash); if (userValidator.ValidateUser()) { var tokenGenerator = new TokenGenerator(loginViewModel.Email); string token = tokenGenerator.Generate(); return(token); } else { return(HttpStatusCode.BadRequest.ToString()); } }
public async Task <IActionResult> PostUser([FromBody] User user) { var validation = new UserValidator().Validate(user); AddValidationResult(validation); if (!validation.IsValid) { return(CustomResponse()); } var userDb = await _context.Users.FirstOrDefaultAsync(u => u.Username == user.Username); if (userDb != null) { AddErrorToList("Already exists an account using this username."); return(CustomResponse()); } _context.Users.Add(user); await _context.SaveChangesAsync(); return(CustomResponse()); }
public CommonApiResponse <User> Post(UserRegisterView userView) { try { jwt = ViewBag.Jwt; if (_userService.GetByEmail(userView.Email) != null) { return(CommonApiResponse <User> .Create(Response, System.Net.HttpStatusCode.Conflict, false, null, "This e-mail address is registered with our system.")); } User user = new User(); user.ParentId = jwt.UserId; user.Email = userView.Email; user.Password = userView.Password; user.Name = userView.Name; user.SurName = userView.SurName; user.StatusId = 2;//Active // user.Role = new List<Role>(); List <ValidationFailure> list = UserValidator.FieldValidate(user).ToList(); if (list.Count > 0) { return(CommonApiResponse <User> .Create(Response, System.Net.HttpStatusCode.NotFound, false, null, list)); } Guid insertId = _userService.Save(user); bool result = Guid.TryParse(insertId.ToString(), out insertId); return(CommonApiResponse <User> .Create(Response, System.Net.HttpStatusCode.OK, true, user, null)); } catch (Exception ex) { return(CommonApiResponse <User> .Create(Response, System.Net.HttpStatusCode.NoContent, false, null, ex.Message)); } }
public void CreateUser_EmailAddressExistsAlready() { UserValidator userValidator = new UserValidator(@"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).{6,}$", 6); using (var db = new UsersRepository()) { // Arrange GenFu.GenFu.Configure <User>() .Fill(x => x.EmailAddress).AsEmailAddress() .Fill(x => x.Password, u => MockDataUtilities.RandomValidPassword(6)) .Fill(x => x.PasswordConfirmation, u => u.Password); var user = GenFu.GenFu.New <User>(); // Act db.AddUser(user, userValidator); // add user again string actualMessage = db.AddUser(user, userValidator); // Assert Assert.Equal( Messages.UserExists, actualMessage); } }
public ApplicationUserManager(IUserStore <ApplicationUser> store, IDataProtectionProvider dataProtectionProvider, INotificationManager notificationManager) : base(store) { // Configure validation logic for usernames UserValidator = new UserValidator <ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false, //RequireUniqueEmail = true, //Cannot require emails because users can be created from wpf admin and username not enforced to be as email }; // Configure validation logic for passwords PasswordValidator = new PasswordValidator { RequiredLength = 5, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false, }; // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user // You can write your own provider and plug it in here. RegisterTwoFactorProvider("PhoneCode", new ApplicationPhoneNumberTokenProvider(notificationManager)); RegisterTwoFactorProvider("EmailCode", new ApplicationEmailTokenProvider(notificationManager)); if (dataProtectionProvider != null) { UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } }
public ApplicationUserManager(IUserStore <ApplicationUser> store) : base(store) { UserValidator = new UserValidator <ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords PasswordValidator = new CustomPasswordValidator(6); // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; var dataProtectionProvider = Startup.DataProtectionProvider; if (dataProtectionProvider != null) { UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } }
public IQueryable <CarStoreModel> All([FromUri] double latitude, [FromUri] double longitude, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey) { var allCarStores = this.PerformOperation <IQueryable <CarStoreModel> >(() => { UserValidator.ValidateSessionKey(sessionKey); using (var context = this.ContextFactory.Create()) { var carStoresModels = new List <CarStoreModel>(); var carEntities = context.Set <CarStore>() .OrderBy(cst => cst.Latitude - latitude) .ThenBy(cst => cst.Longitude - longitude); foreach (var carStoreEntity in carEntities) { carStoresModels.Add(CarStoresMapper.ToModel(carStoreEntity)); } return(carStoresModels.AsQueryable <CarStoreModel>()); } }); return(allCarStores); }
public ApplicationUserManager(IUserStore <Kullanici> store, IDataProtectionProvider dataProtectionProvider) : base(store) { UserValidator = new UserValidator <Kullanici>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = true, RequireLowercase = true, RequireUppercase = true }; UserLockoutEnabledByDefault = false; UserTokenProvider = new DataProtectorTokenProvider <Kullanici>(dataProtectionProvider.Create("ASP.NET Identity")); }
public ApplicationUserManager(IUserStore <User> store, IUserTokenProvider <User, string> userTokenProvider) : base(store) { UserValidator = new UserValidator <User>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = false }; // Configure validation logic for passwords PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false, }; // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; UserTokenProvider = userTokenProvider; }
public async Task <Result> UpdateUser(ScopeOptions scope, UserEdit user) { var validator = new UserValidator(_context, scope, false); var result = validator.Validate(user).GetResult(); if (!result.Success) { return(result); } var entity = await ScopeQuery.GetUserEntityQuery(_context, scope).FirstOrDefaultAsync(m => m.Id == user.Id); if (entity == null) { return(new Result()); } var userEntity = MapModelToEntity(user, entity); var updateResult = await _userManager.UpdateAsync(entity); result.Success = updateResult.Succeeded; if (!result.Success) { result.ValidationFailures = updateResult.Errors.Select(e => new ValidationFailure("", e.Description)).ToList(); return(result); } await UpdateRoles(entity, user.Roles); await UpdateIsLocked(entity, user.IsLocked); await _auditService.InsertAuditLog(scope, AuditLog.ACTION_UPDATE, "User", entity.Id, user); return(result); }
public async Task CanAllowNonAlphaNumericUserName(string userName, bool expectSuccess) { // Setup var manager = MockHelpers.TestUserManager(new NoopUserStore()); manager.Options.User.AllowedUserNameCharacters = null; var validator = new UserValidator <PocoUser>(); var user = new PocoUser { UserName = userName }; // Act var result = await validator.ValidateAsync(manager, user); // Assert if (expectSuccess) { IdentityResultAssert.IsSuccess(result); } else { IdentityResultAssert.IsFailure(result); } }
/// <summary> /// 钉钉集成登录,使用用户ObjectID登录 /// </summary> /// <param name="state">引擎编码</param> /// <param name="code">用户 H3 ObjectID</param> public JsonResult ValidateLoginForDingTalkMobile(string state, string code) { this.Engine.LogWriter.Write("DingTalkMobile:进入登录方法-------------------------"); OThinker.Organization.User currentUser = null; UserValidator userValidator = null; string userImage = string.Empty; // 钉钉登录 IEngine engine = AppUtility.Engine; userValidator = UserValidatorFactory.LoginAsDingTalkPCAndReturnUserValidator(state, code); object result = null; if (userValidator == null) { result = new { Success = false }; } else { currentUser = userValidator.User; userImage = userValidator.ImagePath; MobileAccess mobile = new MobileAccess(); MobileAccess.MobileUser mobileUser = mobile.GetMobileUser(userValidator, currentUser, userImage, string.Empty, string.Empty); result = new { Success = true, MobileUser = mobileUser }; FormsAuthentication.SetAuthCookie(currentUser.Code, false); // 当前用户登录 Session[Sessions.GetUserValidator()] = userValidator; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public User UpdateUser(int id, User user) { var oldUser = _userContext.Select(id); if (oldUser == null) { return(null); } var resultValidator = new UserValidator().Validate(user); if (!resultValidator.IsValid) { _helper.ValidatorHandler(resultValidator); } if (oldUser.Password != user.Password) { oldUser.Password = _authenticationService.GetHash(user.Password); } oldUser.Document = user.Document; oldUser.Email = user.Email; oldUser.Name = user.Name; _userContext.Update(oldUser); return(UserMapper.ConvertDTOToUser(oldUser)); }
public void Should_Not_Have_Error_When_UserName_Is_Unique() { //Arrange _serviceProvider.RunScoped <IUnitOfWork>(uow => { uow.Set <User>().Add(new User { UserName = "******", NormalizedUserName = "******" }); uow.SaveChanges(); }); var unitOfWork = _serviceProvider.GetService <IUnitOfWork>(); var validator = new UserValidator(unitOfWork, _localizer); var model = new UserModel { UserName = "******" }; //Act var result = validator.Validate(model); //Assert result.Errors.ShouldNotContain(x => x.ErrorMessage == "User.Fields.UserName.Unique"); }
public void Should_Not_Have_Error_When_UserName_Is_Unique() { //Arrange _serviceProvider.RunScoped <IDbContext>(context => { context.Set <User>().Add(new User { UserName = "******", NormalizedUserName = "******" }); context.SaveChanges(); }); var dbContext = _serviceProvider.GetService <IDbContext>(); var validator = new UserValidator(dbContext, _translation); var model = new UserModel { UserName = "******" }; //Act var result = validator.Validate(model); //Assert result.Errors.ShouldNotContain(x => x.ErrorMessage == "User.Fields.UserName.Unique"); }
/// <summary> /// Initializes a new instance of the <see cref="UserManager"/> class /// </summary> /// <param name="manager">The <see cref="AccessHandlerManager"/> instance to use</param> internal UserManager(AccessHandlerManager manager) : base(manager.UserAccessHandler) { this.manager = manager; this.UserTokenProvider = new EmailTokenProvider(); // Example for two factor authentication can be found here: http://www.hanselman.com/blog/AddingTwoFactorAuthenticationToAnASPNETApplication.aspx this.RegisterTwoFactorProvider("EmailCode", new EmailTokenProvider() { Subject = "TwoStageCodeSubject", BodyFormat = "TwoStageCodeBody", Manager = this.manager }); this.EmailService = new EmailService(); UserValidator <User> userValidator = new UserValidator <User>(this); userValidator.AllowOnlyAlphanumericUserNames = false; PasswordValidator passwordValidator = new PasswordValidator(); passwordValidator.RequireDigit = true; passwordValidator.RequiredLength = 6; passwordValidator.RequireLowercase = true; passwordValidator.RequireNonLetterOrDigit = true; passwordValidator.RequireUppercase = true; this.PasswordValidator = passwordValidator; this.UserValidator = userValidator; this.MaxFailedAccessAttemptsBeforeLockout = Settings.Default.MaxFailedAccessAttemptsBeforeLockout; this.UserLockoutEnabledByDefault = true; this.DefaultAccountLockoutTimeSpan = Settings.Default.LockoutTimeSpan; }
public ApplicationUserManager(IUserStore <ApplicationUser, int> store) : base(store) { //var manager = new ApplicationUserManager(new UserStoreIntPk(context.Get<ApplicationDbContext>())); // Configure validation logic for usernames UserValidator = new UserValidator <ApplicationUser, int>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords PasswordValidator = new PasswordValidator { RequiredLength = 6, //RequireNonLetterOrDigit = true, //RequireDigit = true, //RequireLowercase = true, //RequireUppercase = true, }; // Configure user lockout defaults UserLockoutEnabledByDefault = true; DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); MaxFailedAccessAttemptsBeforeLockout = 5; //EmailService = new EmailService(); var dataProtectionProvider = Startup.DataProtectionProvider; if (dataProtectionProvider != null) { UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser, int>( dataProtectionProvider.Create("ASP.NET Identity")); } }
public ApplicationUserManager(IUserStore <ApplicationUser, int> store, IDataProtectionProvider dataProtectionProvider) : base(store) { UserValidator = new UserValidator <ApplicationUser, int>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false }; //UserLockoutEnabledByDefault = false; //DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); RegisterTwoFactorProvider("Phone code", new PhoneNumberTokenProvider <ApplicationUser, int> { MessageFormat = "Your security code is {0}" }); RegisterTwoFactorProvider("Email code", new EmailTokenProvider <ApplicationUser, int> { Subject = "Security code", BodyFormat = "Your security code is {0}" }); EmailService = new EmailService(); SmsService = new SmSService(); UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser, int>(dataProtectionProvider.Create("ASP.NET Identity")); }
public ApplicationUserManager(IUserStore <ApplicationUser> userStore, IdentityFactoryOptions <ApplicationUserManager> options) : base(userStore) { UserValidator = new UserValidator <ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; PasswordValidator = new PasswordValidator { RequiredLength = 8, RequireNonLetterOrDigit = true, RequireDigit = true, RequireLowercase = true, RequireUppercase = true }; var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } }
public UserService(IUserStore <User, int> userStore, IdentityFactoryOptions <UserService> options) : base(userStore) { UserValidator = new UserValidator <User, int>(this) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireDigit = true, RequireLowercase = true, }; var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { UserTokenProvider = new DataProtectorTokenProvider <User, int>(dataProtectionProvider.Create("ASP.NET Identity")); } }
public IHttpActionResult UpdateUser(int id, Dto.Models.User userDto) { loggedInUser = GetLoggedInUser(); if (!ModelState.IsValid) { return BadRequest(ModelState); } if (userDto == null) { return new BadRequestErrorMessageResult("Updated user DTO is missing", this); } ValidationResult userValidatorResult = new UserValidator().Validate(userDto); if (!userValidatorResult.IsValid) { return new ValidatorError("Validation failed for updated user DTO", HttpStatusCode.BadRequest, userValidatorResult, Request); } if (id != userDto.Id) { return new BadRequestErrorMessageResult("Updated user DTO id mismatch", this); } var userEntity = Mapper.Map<Dto.Models.User, Entity.Models.User>(userDto); if (userEntity.CompanyId != loggedInUser.CompanyId) { // Updated user does not have same company. Make it appear as user does not exist for this company. return NotFound(); } else if (db.Users.Count(u => u.CompanyId == loggedInUser.CompanyId && u.Id != userEntity.Id && u.Username == userEntity.Username) > 0) { return new BadRequestErrorMessageResult("Another user has the same username as this user", this); } db.Users.Attach(userEntity); // Don't mark entire entity as modified - fields are optional //db.Entry(userEntity).State = EntityState.Modified; if (userEntity.Fullname != null) { db.Entry(userEntity).Property(u => u.Fullname).IsModified = true; } if (userEntity.Username != null) { db.Entry(userEntity).Property(u => u.Username).IsModified = true; } if (userEntity.Password != null) { db.Entry(userEntity).Property(u => u.Password).IsModified = true; } if (userEntity.Password == null) { // Entity validation will fail because Password column is not-null and password is optional field. // NOTE: Must use Where/Select instead of Find, so entire entity is not loaded (otherwise it will conflict with Attach!) //userEntity.Password = db.Users.Where(u => u.Id == userEntity.Id).Select(u => u.Password).FirstOrDefault(); } if (userDto.Properties != null) { db.Entry(userEntity).Collection(u => u.Properties).Load(); // force load var propertyIdList = userDto.Properties.Select(p => p.Id); var newProperties = db.Properties.Where(p => propertyIdList.Contains(p.Id)).ToList(); userEntity.Properties = newProperties; // for this to work you must force load existing Property collection } try { db.Configuration.ValidateOnSaveEnabled = false; db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!UserExists(id)) { return NotFound(); } else { throw; } } finally { db.Configuration.ValidateOnSaveEnabled = true; } return StatusCode(HttpStatusCode.NoContent); }
public FacadeResult<User> SignUp(string name, string email, string password) { #if DEBUG using (MiniProfiler.Current.Step("AccountFacade.SignUp")) { #endif using (var context = new UnitOfWorkScope(TransactionMode.New)) { var user = User.Create(email, name, password); var userValidation = new UserValidator() .Validate(user); if (userValidation.IsValid == false) { var error = userValidation.Errors .First().ErrorMessage .GetError(); return new FacadeResult<User>(error); } context.Commit(); UserCacheManager.Put(user); return new FacadeResult<User>(user); } #if DEBUG } #endif }
public void CanSaveAllEntities() { using (var session = factory.OpenSession()) { using (var tran = session.BeginTransaction()) { var blog = new Blog(); var user = new User(); var post = new Post(); var tag = new Tag(); var postComment = new PostComment(); var configuration = new BlogConfiguration(); configuration.PageSize = 3; configuration["osman"] = "mahmut"; user.UserName = "******"; user.Password = "******"; user.Email = "*****@*****.**"; user.Blogs.Add(blog); blog.Configuration = configuration; blog.Writers.Add(user); blog.Title = "my blog"; blog.Name = "My Blog"; blog.Founder = user; blog.Posts.Add(post); blog.Host = "localhost"; post.Blog = blog; post.Content = "hello"; post.Publisher = user; post.DateCreated = DateTime.Now; post.DatePublished = DateTime.Now.AddMinutes(3); post.Title = "post title"; post.FriendlyTitle = post.Title.Replace(' ', '_').ToLower(); post.AddComment(postComment, null); postComment.Post = post; postComment.Date = DateTime.Now.AddMinutes(6); postComment.Email = "*****@*****.**"; postComment.Name = "Some One"; postComment.Comment = "Some One wrote here!!"; tag.Name = "Tag"; tag.FriendlyName = "Tagged"; tag.Posts.Add(post); post.Tags.Add(tag); var blogVal = new BlogValidator(); blogVal.ValidateAndThrowException(blog); var postVal = new PostValidator(); postVal.ValidateAndThrowException(post); var postCommVal = new PostCommentValidator(); postCommVal.ValidateAndThrowException(postComment); var userVal = new UserValidator(); userVal.ValidateAndThrowException(user); var tagVal = new TagValidator(); tagVal.ValidateAndThrowException(tag); session.Save(user); session.Save(blog); session.Save(post); session.Save(postComment); session.Save(tag); tran.Commit(); } } using (var session = factory.OpenSession()) { var item = session.CreateCriteria(typeof (Blog)).UniqueResult<Blog>(); var pageSize = item.Configuration.PageSize; Assert.That(pageSize, Is.EqualTo(3)); } }
public FacadeResult<User> UpdateUserPassword(long userId, string password) { #if DEBUG using (MiniProfiler.Current.Step("AccountFacade.UpdateUserPassword")) { #endif using (var context = new UnitOfWorkScope()) { var user = User.GetById(userId); if (user != null) { user.SetPassword(password); } var validationResults = new UserValidator() .Validate(user); if (validationResults.IsValid) { context.Commit(); UserCacheManager.Put(user); return new FacadeResult<User>(user); } var error = validationResults.Errors .First().ErrorMessage .GetError(); return new FacadeResult<User>(error); } #if DEBUG } #endif }
public UserModule(IUserService _userService, ISiteService _siteService, IRoleService _roleService, IUserRoleMappingService _userRoleMappingService) : base("/user") { UserValidator uservalidator = new UserValidator(); Get["/list"] = x => { return View["User/List",_userService.GetAllUser()]; }; Get["/add"] = x => { ViewBag.Errored = false; return View["User/Add", new User()]; }; Post["/add"] = x => { User user = this.Bind<User>(); ValidationResult results = uservalidator.Validate(user); if (!results.IsValid) { ViewBag.ErrorMsg = HtmlUtils.GetCharisma_Alert(Charisma_AlertType.error,"错误信息", results.Errors); ViewBag.Errored = true; return View["User/Add", user]; } if (_userService.CreateUser(user)) { ViewBag.ErrorMsg = "<strong>OK~</strong>"; ViewBag.Errored = true; return View["User/Add", user]; } ViewBag.ErrorMsg = "<strong>出错啦~</strong>"; ViewBag.Errored = true; return View["User/Add", user]; //return this.Context.GetRedirect("~/user/add?error=true"); //return View["User/Add"]; }; Get["/edit/{id}"] = x => { return View["User/Edit", _userService.GetByAutoId((int)x.id)]; }; Post["/edit/{id}"] = x => { ViewBag.Errored = true; var user = this.Bind<User>(); var model = _userService.GetById(user.ID); if (!String.IsNullOrEmpty(user.Password)) { model.PasswordSalt = PasswordUtil.GenerateSalt(); model.Password = PasswordUtil.EncodePassword(user.Password, model.PasswordFormat, model.PasswordSalt); model.passwordConfirm = PasswordUtil.EncodePassword(user.passwordConfirm, model.PasswordFormat, model.PasswordSalt); } else { model.passwordConfirm = model.Password; } model.PrivateEmail = user.PrivateEmail; model.Nickname = user.Nickname; model.Gender = user.Gender; model.Status = user.Status; ValidationResult results = uservalidator.Validate(model); if (!results.IsValid) { ViewBag.ErrorMsg = HtmlUtils.GetCharisma_Alert(Charisma_AlertType.error, "错误信息", results.Errors); return View["User/Edit", user]; } if (user.ID == Guid.Empty) { return Response.AsRedirect("/user/list"); } if (_userService.ModifyUser(model)) { ViewBag.ErrorMsg = HtmlUtils.GetCharisma_Alert(Charisma_AlertType.success, "成功信息", "修改用户信息成功"); } else { ViewBag.ErrorMsg = HtmlUtils.GetCharisma_Alert(Charisma_AlertType.error, "错误信息", "未知错误,请联系管理员"); } return View["User/Edit", user]; }; Get["/delete/{id}"] = x => { var model = _userService.GetByAutoId((int)x.id); _userService.DeleteUser(model.ID); return Response.AsRedirect("/user/list"); }; Get["/editrole"] = x => { Guid userId = new Guid(Request.Query.userId); dynamic SiteId = null; SiteId = !String.IsNullOrEmpty(Request.Query.siteId.ToString()) && Request.Query.siteId != null ? new Guid(Request.Query.siteId) : Guid.Empty; var usermodel = _userService.GetById(userId); ViewBag.UserName = usermodel.UserName; ViewBag.UserId = usermodel.ID; ViewBag.SiteId = SiteId; ViewBag.SiteList = _siteService.GetAllSite(); List<Role> siteRoles = _roleService.GetAllBySiteId(SiteId); List<Role> rightRoles = _roleService.GetAllBySiteIdAndUserId(SiteId, userId); ViewBag.NoSystemRoles = (SiteId != Guid.Empty && siteRoles.Count == 0); var leftRoles = (from p in siteRoles where !rightRoles.Exists(r => r.ID == p.ID) select p).ToList(); ViewBag.LeftRoles = leftRoles; ViewBag.RightRoles = rightRoles; return View["User/EditRole"]; }; Post["/saverole"] = x => { var result = new NotyResult(); Guid userId = new Guid(Request.Form.userId); dynamic SiteId = null; SiteId = !String.IsNullOrEmpty(Request.Form.siteId.ToString()) && Request.Form.siteId != null ? new Guid(Request.Form.siteId) : Guid.Empty; Guid[] ids = RequestResultUtil.GetIdsByGuid(Request.Form.ids); var list = (ids ?? new Guid[0]); if (SiteId == Guid.Empty) { result.code = NotyType.warning.ToString(); result.msg = "你没有选择站点!"; } else { List<Role> rightRoles = _roleService.GetAllBySiteIdAndUserId(SiteId, userId); bool changed = false; bool success = false; List<object> added = new List<object>(); List<object> removed = new List<object>(); // 处理加角色的情况 foreach (Guid roleId in list) { if (!rightRoles.Exists(r=>r.ID == roleId)) { changed = true; success = _userRoleMappingService.CreateUserRoleMapping(userId, roleId); added.Add(new { userId = userId, siteId = SiteId, roleId = roleId }); } } // 处理减角色的情况 foreach (Role role in rightRoles) { if (!list.ToList().Exists(r=>r == role.ID)) { changed = true; success = _userRoleMappingService.DeleteByUserIdAndRoleId(userId, role.ID); removed.Add(new { userId = userId, siteId = SiteId, roleId = role.ID }); } } if (!changed || (changed && success)) { result.code = NotyType.success.ToString(); result.msg = "保存成功!"; } else { result.code = NotyType.error.ToString(); result.msg = "保存失败!请联系管理员!"; } } //if (list.Length == 0) //{ // result.code = NotyType.warning.ToString(); // result.msg = "你没有选择!"; //} //else //{ // result.code = NotyType.success.ToString(); // result.msg = "排序成功"; //} //else //{ // result.code = NotyType.error.ToString(); // result.msg = "排序失败!请联系管理员!"; //} return this.Response.AsJson<NotyResult>(result); }; }
public FacadeResult<User> UpdateUserProfile(long userId, string name, string email) { #if DEBUG using (MiniProfiler.Current.Step("AccountFacade.UpdateUserProfile")) { #endif using (var context = new UnitOfWorkScope()) { var user = User.GetById(userId); if (user != null) { user.Name = (name ?? "").Trim(); user.Email = (email ?? "").Trim().ToLower(); } var validationResults = new UserValidator() .Validate(user); if (validationResults.IsValid) { context.Commit(); UserCacheManager.Put(user); return new FacadeResult<User>(user); } var error = validationResults.Errors .First().ErrorMessage .GetError(); return new FacadeResult<User>(error); } } #if DEBUG }
public IHttpActionResult DeleteUser(int id) { loggedInUser = GetLoggedInUser(); Entity.Models.User userEntity = db.Users.FirstOrDefault(u => u.CompanyId == loggedInUser.CompanyId && u.Id == id); if (userEntity == null) { return NotFound(); } // Get DTO object before deleting or this will fail. var userDto = Mapper.Map<Entity.Models.User, Dto.Models.User>(userEntity); GenerateUserPhotoLink(userDto); ValidationResult userValidatorResult = new UserValidator().Validate(userDto, ruleSet: "default,NoPassword"); if (!userValidatorResult.IsValid) { return new ValidatorError("Error mapping user DTO from database", HttpStatusCode.InternalServerError, userValidatorResult, Request); } // EF diagram won't support cascade deletes on many-to-many relationships, so we have to manually // delete user properties here foreach (var p in userEntity.Properties) { p.Users.Remove(userEntity); } db.Users.Remove(userEntity); db.SaveChanges(); return Ok(userDto); }
public IHttpActionResult NewUser(Dto.Models.User userDto) { loggedInUser = GetLoggedInUser(); if (!ModelState.IsValid) { return BadRequest(ModelState); } ValidationResult userValidatorResult = new UserValidator().Validate(userDto, "default,Password"); if (!userValidatorResult.IsValid) { return new ValidatorError("Validation failed for new user DTO", HttpStatusCode.BadRequest, userValidatorResult, Request); } var userEntity = Mapper.Map<Dto.Models.User, Entity.Models.User>(userDto); if (userEntity.CompanyId != loggedInUser.CompanyId) { return new BadRequestErrorMessageResult("New user does not have same company as logged in user", this); } else if (db.Users.Count(u => u.CompanyId == loggedInUser.CompanyId && u.Id != userEntity.Id && u.Username == userEntity.Username) > 0) { return new BadRequestErrorMessageResult("Another user has the same username as this user", this); } if (userDto.Properties != null) { var propertyIdList = userDto.Properties.Select(p => p.Id); var properties = db.Properties.Where(p => propertyIdList.Contains(p.Id)); foreach (var p in properties) { p.Users.Add(userEntity); } } var company = db.Companies.Find(userDto.Company.Id); company.Users.Add(userEntity); db.SaveChanges(); userDto = Mapper.Map<Entity.Models.User, Dto.Models.User>(userEntity); GenerateUserPhotoLink(userDto); userValidatorResult = new UserValidator().Validate(userDto, ruleSet: "default,NoPassword"); if (!userValidatorResult.IsValid) { return new ValidatorError("Error mapping user DTO from database", HttpStatusCode.InternalServerError, userValidatorResult, Request); } return CreatedAtRoute("NewUserRoute", new { id = userDto.Id }, userDto); }
public UserViewModel() { _userValidator = new UserValidator(); }
// Bindings for Identity, requires improvment. private static void RegisterIdentity(IKernel kernel) { kernel.Bind<IUserStore<User>>().To<AppUserStore>(); kernel.Bind<UserManager<User>>().ToMethod<UserManager<User>>(ctx => { var userStore = ctx.Kernel.Get<IUserStore<User>>(); var manager = new UserManager<User>(userStore); var userValidator = new UserValidator<User>(manager); manager.UserValidator = IdentityConfig.Configure(userValidator); var passwordValidator = ctx.Kernel.Get<PasswordValidator>(); manager.PasswordValidator = IdentityConfig.Configure(passwordValidator); IdentityConfig.Configure(manager); var phoneNumberTokenProvider = ctx.Kernel.Get<PhoneNumberTokenProvider<User>>(); manager.RegisterTwoFactorProvider("Phone Code", IdentityConfig.Configure(phoneNumberTokenProvider)); var emailTokenProvider = ctx.Kernel.Get<EmailTokenProvider<User>>(); manager.RegisterTwoFactorProvider("Email Code", IdentityConfig.Configure(emailTokenProvider)); var dataProtectionProvider = OwinConfig.DataProtectionProvider; if (dataProtectionProvider != null) { manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity")); } return manager; }); kernel.Bind<IAuthenticationManager>() .ToMethod(ctx => HttpContext.Current.GetOwinContext().Authentication) .InRequestScope(); }
public UserModule() { Get ["/users"] = _ => { var a = DocumentSession.Query<User> ().ToList (); return View ["User/users", a]; }; Get ["/user/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username).FirstOrDefault (); if (user == null) return new NotFoundResponse (); return View ["User/user", user]; }; Get ["/user/update/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username).FirstOrDefault (); if (user == null) return new NotFoundResponse (); return View ["User/update", user]; }; Put ["/user/update/{Username}"] = x => { var user = this.Bind<User> (); var result = new UserValidator().Validate(user, ruleSet: "Update"); if (!result.IsValid) { return View["Shared/_errors", result]; } var username = (string)x.Username; var saved = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username) .FirstOrDefault (); if (saved == null) return new NotFoundResponse (); saved.Fill (user); var resp = new JsonResponse<User> ( saved, new DefaultJsonSerializer () ); resp.Headers.Add ("Location", "/user/" + saved.Username); resp.StatusCode = HttpStatusCode.Created; return resp; }; Get ["/user/create"] = x => { return View ["User/create"]; }; Post ["/user/create"] = x => { var user = this.Bind<User> (); var result = new UserValidator().Validate(user); if (!result.IsValid) { return View["Shared/_errors", result]; } DocumentSession.Store (user); var resp = new JsonResponse<User> ( user, new DefaultJsonSerializer () ); resp.Headers.Add ("Location", "/user/" + user.Username); resp.StatusCode = HttpStatusCode.Created; return resp; }; Delete ["/user/delete/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username) .FirstOrDefault (); if (user == null) return new NotFoundResponse (); DocumentSession.Delete (user); var resp = new JsonResponse<User> ( user, new DefaultJsonSerializer () ); resp.StatusCode = HttpStatusCode.OK; return resp; }; }
public User() { Validator = new UserValidator(); }
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var validator = new UserValidator(); var result = validator.Validate(this); return result.Errors.Select(item => new ValidationResult(item.ErrorMessage, new[] { item.PropertyName })); }
public UserService(IKeyedRepository<int, User> userRepo) { _userRepo = userRepo; _validation = new UserValidator(userRepo); }
public UserModule() : base("/users") { Get ["/"] = _ => { return View ["index", DocumentSession.Query<User> () .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .ToList ()]; }; Get ["/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .Where (n => n.Username == username).FirstOrDefault (); if (user == null) return new NotFoundResponse (); return View ["show", user]; }; Get ["/new"] = x => { return View ["new", new User ()]; }; Post ["/new"] = x => { var user = this.Bind<User> (); var result = new UserValidator ().Validate (user); if (!result.IsValid) { return View ["Shared/_errors", result]; } DocumentSession.Store (user); return Response.AsRedirect(string.Format("/users/{0}", user.Username)); }; Get ["/edit/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username).FirstOrDefault (); if (user == null) return new NotFoundResponse (); return View ["edit", user]; }; Post ["/edit/{Username}"] = x => { var user = this.Bind<User> (); var result = new UserValidator ().Validate (user, ruleSet: "Update"); if (!result.IsValid) { return View ["Shared/_errors", result]; } var username = (string)x.Username; var saved = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username) .FirstOrDefault (); if (saved == null) return new NotFoundResponse (); saved.Fill (user); return Response.AsRedirect(string.Format("/users/{0}", user.Username)); }; Delete ["/delete/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username) .FirstOrDefault (); if (user == null) return new NotFoundResponse (); DocumentSession.Delete (user); var resp = new JsonResponse<User> ( user, new DefaultJsonSerializer () ); resp.StatusCode = HttpStatusCode.OK; return resp; }; Get ["/delete/{Username}"] = x => { var username = (string)x.Username; var user = DocumentSession.Query<User> ("UsersByUsername") .Where (n => n.Username == username).FirstOrDefault (); if (user == null) return new NotFoundResponse (); DocumentSession.Delete (user); return Response.AsRedirect("/users"); }; }