public UserAccountModule(ICommandDispatcher commandDispatcher, IPasswordEncryptor passwordEncryptor) { Post["/register"] = _ => { var req = this.Bind<NewUserRequest>(); commandDispatcher.Dispatch(this.UserSession(), new CreateUser(req.Email, passwordEncryptor.Encrypt(req.Password), req.Name, req.PhoneNumber)); return null; }; Post["/password/requestReset"] = _ => { var req = this.Bind<ResetPasswordRequest>(); commandDispatcher.Dispatch(this.UserSession(), new CreatePasswordResetToken(req.Email) ); return null; }; Put["/password/reset/{token}"] = _ => { return null; }; }
public LoginModule( IReadOnlyRepository readOnlyRepository, IPasswordEncryptor passwordEncryptor, IUserSessionFactory userSessionFactory) { Post["/login"] = r => { var loginInfo = this.Bind<LoginRequest>(); EncryptedPassword encryptedPassword = passwordEncryptor.Encrypt(loginInfo.Password); try { var user = readOnlyRepository.First<User>( x => x.Email == loginInfo.Email && x.EncryptedPassword == encryptedPassword.Password); if (!user.Activated) return new Response().WithStatusCode(HttpStatusCode.Forbidden); var userSession = userSessionFactory.Create(user); return new SuccessfulLoginResponse<Guid>(userSession.Id, userSession.Expires); } catch (ItemNotFoundException<User> ex) { return new Response().WithStatusCode(HttpStatusCode.Unauthorized); } }; }
public void Setup() { _webSiteRepository = Substitute.For <IRepository <WebSite> >(); _webSiteManagerData = Substitute.For <IWebSiteManagerData>(); _passwordEncryptor = Substitute.For <IPasswordEncryptor>(); _webSiteService = new WebSiteService(_webSiteManagerData, _passwordEncryptor); }
public NewUserModule(IPasswordEncryptor passwordEncryptor, ICommandDispatcher commandDispatcher, IReadOnlyRepository readOnlyRepository) { Post["/user/facebook"] = r => { var newUserRequest = this.Bind<NewUserRequest>(); CheckForExistingFacebookUser(readOnlyRepository, newUserRequest); DispatchCommand(commandDispatcher, newUserRequest); return new Response().WithStatusCode(HttpStatusCode.OK); }; Post["/user"] = r => { var newUserRequest = this.Bind<NewUserRequest>(); CheckForExistingUser(readOnlyRepository, newUserRequest); commandDispatcher.Dispatch(this.VisitorSession(), new NewUserCommand { Email = newUserRequest.Email, EncryptedPassword = passwordEncryptor. Encrypt( newUserRequest. Password) }); return new Response().WithStatusCode(HttpStatusCode.OK); }; }
public UserAccountModule(IDispatcherFactory dispatcherFactory, IPasswordEncryptor passwordEncryptor) { Post["/register"] = _ => { var req = this.Bind<NewUserRequest>(); var command = new CreateUser(req.Email, passwordEncryptor.Encrypt(req.Password), req.Name, req.PhoneNumber); dispatcherFactory.Create(this.UserSession(), command) .Dispatch(this.UserSession(), command); return null; }; Post["/password/requestReset"] = _ => { var req = this.Bind<ResetPasswordRequest>(); var command = new CreatePasswordResetToken(req.Email); dispatcherFactory.Create(this.UserSession(), command) .Dispatch(this.UserSession(), command ); return null; }; Put["/password/reset/{token}"] = p => { var newPasswordRequest = this.Bind<NewPasswordRequest>(); var token = Guid.Parse((string)p.token); var command = new ResetPassword(token, passwordEncryptor.Encrypt(newPasswordRequest.Password)); dispatcherFactory.Create(this.UserSession(), command) .Dispatch(this.UserSession(), command); return null; }; }
public LoginModule(IPasswordEncryptor passwordEncryptor, IReadOnlyRepository readOnlyRepository, IUserSessionFactory userSessionFactory) { Post["/login"] = _ => { var loginInfo = this.Bind<LoginRequest>(); if (loginInfo.Email == null) throw new UserInputPropertyMissingException("Email"); if (loginInfo.Password == null) throw new UserInputPropertyMissingException("Password"); EncryptedPassword encryptedPassword = passwordEncryptor.Encrypt(loginInfo.Password); try { var user = readOnlyRepository.First<User>( x => x.Email == loginInfo.Email && x.EncryptedPassword == encryptedPassword.Password); UserLoginSession userLoginSession = userSessionFactory.Create(user); return new SuccessfulLoginResponse<Guid>(userLoginSession.Id, user.Id, user.Name, userLoginSession.Expires); } catch (ItemNotFoundException<User>) { throw new UnauthorizedAccessException(); } }; }
public CustomerMembershipService(ICustomerProvider customerProvider , ICustomerService customerService, IPasswordEncryptor passwordEncryptor) { this.CustomerProvider = customerProvider; this.CustomerService = customerService; this.PasswordEncryptor = passwordEncryptor; }
public void Setup() { repository = A.Fake <IRepository>(); passwordEncryptor = A.Fake <IPasswordEncryptor>(); passwordGenerator = A.Fake <IPasswordGenerator>(); staffDomainService = new StaffDomainService(repository, passwordEncryptor, passwordGenerator); }
public CreateUserCommandHandler(MonumentsDbContext dbContext, IPasswordEncryptor passwordEncryptor, IEmailSender emailSender) { _dbContext = dbContext; _passwordEncryptor = passwordEncryptor; _emailSender = emailSender; }
public UserService(IRepository repository, INotificationService notificationService, IResourceService resourceService, IPasswordEncryptor passwordEncryptor) { this.repository = repository; this.resourceService = resourceService; this.notificationService = notificationService; this.passwordEncryptor = passwordEncryptor; }
public void Setup() { repository = A.Fake <IRepository>(); var emailManager = A.Fake <IEmailManager>(); passwordEncryptor = A.Fake <IPasswordEncryptor>(); passwordGenerator = A.Fake <IPasswordGenerator>(); waiterService = new WaiterService(repository, emailManager, passwordEncryptor, passwordGenerator); }
public NewUserModule(IPasswordEncryptor passwordEncryptor, ICommandDispatcher commandDispatcher, IReadOnlyRepository readOnlyRepository) { Post["/user"] = r => { var newUserRequest = this.Bind<NewUserRequest>(); CheckForExistingUser(readOnlyRepository, newUserRequest); DispatchCommand(passwordEncryptor, commandDispatcher, newUserRequest); return new Response().WithStatusCode(HttpStatusCode.OK); }; }
static void DispatchCommand(IPasswordEncryptor passwordEncryptor, ICommandDispatcher commandDispatcher, NewUserRequest newUserRequest) { commandDispatcher.Dispatch(new NewUserCommand { Email = newUserRequest.Email, EncryptedPassword = passwordEncryptor.Encrypt( newUserRequest.Password), AgreementVersion = newUserRequest.AgreementVersion }); }
public PasswordManager(IPasswordEncryptor defaultPasswordEncryptor, IList <IPasswordEncryptor> customPasswordChecker) { // add default password encryptors for password checking // for Camunda 7.6 and earlier AddPasswordCheckerAndThrowErrorIfAlreadyAvailable(new ShaHashDigest()); // from Camunda 7.7 AddPasswordCheckerAndThrowErrorIfAlreadyAvailable(new Sha512HashDigest()); // add custom encryptors AddAllPasswordChecker(customPasswordChecker); AddDefaultEncryptor(defaultPasswordEncryptor); }
public AuthenticationModule( IDatabase database, IPasswordEncryptor passwordEncryptor ) { Get[Route.Login] = o => View[Route.Login, new LoginRequest()]; Post[Route.Login] = o => { var request = this.Bind<LoginRequest>(); try { // TODO: Use validation attributes, or call Validate on LoginRequest if ( string.IsNullOrWhiteSpace(request.UserName) || string.IsNullOrWhiteSpace(request.Password) ) { throw new Exception("Username and password are required"); } var user = database.GetUserByName( request.UserName ); if ( null == user ) { throw new Exception( LoginFailureMessage ); } var credentials = database.GetUserCredentialsByUserId( user.Id ); if ( passwordEncryptor.Encrypt(request.Password) != credentials.EncryptedPassword ) { throw new Exception( LoginFailureMessage ); } var expiry = DateTime.MaxValue; return this.LoginAndRedirect( credentials.AuthId, expiry, Route.Home ); } catch ( Exception exception ) { this.AddUserMessage(exception.Message); return View[Route.Login, request]; } }; Get[Route.Logout] = o => { // this.AddUserMessage("You have been logged out"); return this.LogoutAndRedirect( Route.Login ); }; }
public RegistrationModule( IDatabase database, IEmailAddressFormatValidator emailAddressFormatValidator, IPasswordEncryptor passwordEncryptor ) { this.database = database; this.passwordEncryptor = passwordEncryptor; Get[Route.Register] = o => { var model = new RegistrationRequest(); return View[Route.Register, model]; }; Post[Route.Register] = o => { RegistrationRequest request = this.Bind<RegistrationRequest>(); try { if ( string.IsNullOrWhiteSpace(request.UserName) || !App.Settings.UserNameSizeRange.Contains( request.UserName.Length ) ) { throw new Exception( string.Format( "User name must be between {0} and {1} characters long", App.Settings.UserNameSizeRange.Min, App.Settings.UserNameSizeRange.Max ) ); } if ( !request.UserName.IsAlphanumeric() ) { throw new Exception( "User name can contain only alphanumeric characters" ); } if ( null != database.GetUserByName( request.UserName ) ) { throw new Exception("An account with that name already exists"); } // if ( !emailAddressFormatValidator.IsValidFormat(request.EmailAddress) ) // { // throw new Exception("Invalid email address"); // } // // if ( null != database.GetUserCredentialsByEmailAddress( request.EmailAddress ) ) // { // throw new Exception("That email address is already in use"); // } var result = PasswordValidator.Validate( request.Password1 ); if ( !result.IsValid ) { throw new Exception( string.Join( ", ", result.ValidationErrors ) ); } if ( request.Password1 != request.Password2 ) { throw new Exception( "Passwords do not match" ); } AddUserFor( request ); } catch ( Exception e ) { this.AddUserMessage(e.Message); return View[Route.Register, request]; } this.AddUserMessage("Registration successful"); return Response.AsRedirect( Route.SelectGames ); }; }
public AuthenticationService(IUserService userService, IPasswordEncryptor passwordEncryptor) { this.userService = userService; this.passwordEncryptor = passwordEncryptor; }
public LoginModule( IReadOnlyRepository readOnlyRepository, IUserSessionFactory userSessionFactory, IPasswordEncryptor passwordEncryptor) { Post["/login/facebook"] = r => { var loginInfo = this.Bind<FacebookLoginRequest>(); try { var user = readOnlyRepository.First<User>(x => x.FacebookId == loginInfo.FacebookId); //if (!user.Verified) return new Response().WithStatusCode(HttpStatusCode.Forbidden); UserSession userSession = userSessionFactory.Create(user); return new SuccessfulLoginResponse<Guid>(userSession.Id, userSession.Expires); } catch (ItemNotFoundException<User> ex) { return new Response().WithStatusCode(HttpStatusCode.Unauthorized); } }; Post["/login"] = r => { var loginInfo = this.Bind<BasicLoginRequest>(); if (loginInfo.Email == null) throw new UserInputPropertyMissingException("Email"); if (loginInfo.Password == null) throw new UserInputPropertyMissingException("Password"); EncryptedPassword encryptedPassword = passwordEncryptor.Encrypt(loginInfo.Password); try { var user = readOnlyRepository.First<User>( x => x.Email == loginInfo.Email && x.EncryptedPassword == encryptedPassword.Password); //if (!user.Activated) throw new ForbiddenRequestException(); UserSession userSession = userSessionFactory.Create(user); return new SuccessfulLoginResponse<Guid>(userSession.Id, userSession.Expires); } catch (ItemNotFoundException<User>) { throw new UnauthorizedAccessException(); } }; Post["/logout"] = r => { var loginInfo = this.Bind<FacebookLoginRequest>(); try { var session = readOnlyRepository.First<UserSession>(x => x.User.FacebookId == loginInfo.FacebookId); userSessionFactory.Delete(session.Id); return new Response().WithStatusCode(HttpStatusCode.OK); } catch (ItemNotFoundException<UserSession> ex) { return new Response().WithStatusCode(HttpStatusCode.Unauthorized); } }; }
public UserAccountModule(IReadOnlyRepository readOnlyRepository,ICommandDispatcher commandDispatcher, IPasswordEncryptor passwordEncryptor, IMappingEngine mappingEngine) { Post["/register"] = _ => { var req = this.Bind<NewUserRequest>(); var abilities = mappingEngine.Map<IEnumerable<UserAbilityRequest>, IEnumerable<UserAbility>>(req.Abilities); commandDispatcher.Dispatch(this.UserSession(), new CreateEmailLoginUser(req.Email, passwordEncryptor.Encrypt(req.Password), req.Name, req.PhoneNumber, abilities)); return null; }; Post["/register/facebook"] = _ => { var req = this.Bind<FacebookRegisterRequest>(); commandDispatcher.Dispatch(this.UserSession(), new CreateFacebookLoginUser(req.id,req.email, req.first_name, req.last_name,req.link,req.name,req.url_image)); return null; }; Post["/register/google"] = _ => { var req = this.Bind<GoogleRegisterRequest>(); commandDispatcher.Dispatch(this.UserSession(), new CreateGoogleLoginUser(req.id,req.email,req.name.givenName,req.name.familyName,req.url,req.displayName,req.image.url)); return null; }; Post["/password/requestReset"] = _ => { var req = this.Bind<ResetPasswordRequest>(); commandDispatcher.Dispatch(this.UserSession(), new CreatePasswordResetToken(req.Email) ); return null; }; Put["/password/reset/{token}"] = p => { var newPasswordRequest = this.Bind<NewPasswordRequest>(); var token = Guid.Parse((string)p.token); commandDispatcher.Dispatch(this.UserSession(), new ResetPassword(token, passwordEncryptor.Encrypt(newPasswordRequest.Password))); return null; }; Post["/user/abilites"] = p => { var requestAbilites = this.Bind<UserAbilitiesRequest>(); commandDispatcher.Dispatch(this.UserSession(), new AddAbilitiesToUser(requestAbilites.UserId, requestAbilites.Abilities.Select(x => x.Id))); return null; }; Get["/abilities"] = _ => { var abilites = readOnlyRepository.GetAll<UserAbility>(); var mappedAbilites = mappingEngine.Map<IEnumerable<UserAbility>, IEnumerable<UserAbilityRequest>>(abilites); return mappedAbilites; }; }
public EGUserAccessManager(DbObjectOperator op, IPasswordEncryptor encryptor) : base(op) { base.AccountManager.PasswordEncryptor = encryptor; }
public UserProfileModule( IDatabase database, IPasswordEncryptor passwordEncryptor ) : base(database) { this.passwordEncryptor = passwordEncryptor; this.RequiresAuthentication(); Get[Route.UserProfile] = o => { return View[Route.UserProfile]; }; Get[Route.ChangePassword] = o => { return View[Route.ChangePassword]; }; Post[Route.ChangePassword] = o => { var request = this.Bind<ChangePasswordRequest>(); var user = this.CurrentUser; try { var userCredentials = database.GetUserCredentialsByUserId( user.Id ); if ( string.IsNullOrWhiteSpace( request.CurrentPassword ) ) { throw new Exception( "Incorrect password" ); } if ( passwordEncryptor.Encrypt( request.CurrentPassword ) != userCredentials.EncryptedPassword ) { throw new Exception( "Incorrect password" ); } if ( request.NewPassword1 != request.NewPassword2 ) { throw new Exception( "Passwords don't match" ); } var result = PasswordValidator.Validate( request.NewPassword1 ); if ( !result.IsValid ) { throw new Exception( string.Join( ", ", result.ValidationErrors ) ); } userCredentials.EncryptedPassword = passwordEncryptor.Encrypt( request.NewPassword1 ); database.UpdateUserCredentials( userCredentials ); } catch ( Exception ex ) { this.AddUserMessage( ex.Message ); return View[Route.ChangePassword]; } this.AddUserMessage( "Your password has been changed" ); return View[Route.UserProfile]; }; Get[Route.SelectGames] = o => { var model = new SelectGamesViewModel(); var availableGames = database.GetGames(); var gamesPlayedByUser = database.GetGamesPlayedByUser( ((UserIdentity)Context.CurrentUser).UserId ); foreach ( var availableGame in availableGames ) { model.SelectableGames.Add( new Selectable<Game> { Item = availableGame, IsSelected = gamesPlayedByUser.Any( game => game.Id == availableGame.Id ) } ); } return View[Route.SelectGames, model]; }; Post[Route.SelectGames] = o => { var request = this.Bind<SelectGamesRequest>(); database.SetGamesPlayedByUser(((UserIdentity)Context.CurrentUser).UserId, request.GameIds); return Response.AsRedirect( Route.Home ); }; }
public TestDatabase( IPasswordEncryptor passwordEncryptor ) { new TestDatabasePopulator(this, passwordEncryptor).Populate(); }
public TestDatabasePopulator( TestDatabase database, IPasswordEncryptor passwordEncryptor ) { this.database = database; this.passwordEncryptor = passwordEncryptor; }