Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
 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);
     };
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
        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();
            }
        }
Ejemplo n.º 12
0
        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);
            });
        }
Ejemplo n.º 13
0
        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"));
        }
Ejemplo n.º 14
0
        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");
        }
Ejemplo n.º 15
0
        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("Неправильний логін або пароль");
            }
        }
Ejemplo n.º 16
0
        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);
            });
        }
Ejemplo n.º 17
0
        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>();
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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());
        }
Ejemplo n.º 20
0
 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);
        }
Ejemplo n.º 23
0
        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());
            }
        }
Ejemplo n.º 24
0
        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());
        }
Ejemplo n.º 25
0
        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));
            }
        }
Ejemplo n.º 26
0
        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);
            }
        }
Ejemplo n.º 27
0
        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"));
            }
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 30
0
        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"));
        }
Ejemplo n.º 31
0
        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;
        }
Ejemplo n.º 32
0
        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);
        }
Ejemplo n.º 33
0
        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));
        }
Ejemplo n.º 35
0
        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");
        }
Ejemplo n.º 38
0
        /// <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;
        }
Ejemplo n.º 39
0
        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"));
        }
Ejemplo n.º 41
0
        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"));
            }
        }
Ejemplo n.º 42
0
        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"));
            }
        }
Ejemplo n.º 43
0
        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);
        }
Ejemplo n.º 44
0
        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
        }
Ejemplo n.º 45
0
        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));
            }
        }
Ejemplo n.º 46
0
        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
        }
Ejemplo n.º 47
0
        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);
            };
        }
Ejemplo n.º 48
0
        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
        }
Ejemplo n.º 49
0
        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);
        }
Ejemplo n.º 50
0
        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();
 }
Ejemplo n.º 52
0
        // 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();
        }
Ejemplo n.º 53
0
        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;

            };
        }
Ejemplo n.º 54
0
 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 }));
 }
Ejemplo n.º 56
0
 public UserService(IKeyedRepository<int, User> userRepo)
 {
     _userRepo = userRepo;
     _validation = new UserValidator(userRepo);
 }
Ejemplo n.º 57
0
        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");
            };
        }