/******************************************************************************* * Copyright (c) 2015 IBH SYSTEMS GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBH SYSTEMS GmbH - initial API and implementation *******************************************************************************/ package org.eclipse.packagedrone.sec.web.ui; import org.eclipse.packagedrone.sec.CreateUser; import org.eclipse.packagedrone.sec.DatabaseUserInformation; import org.eclipse.packagedrone.sec.UserStorage; import org.eclipse.packagedrone.sec.service.password.BadPasswordException; import org.eclipse.packagedrone.sec.service.password.PasswordChecker; import org.eclipse.packagedrone.web.controller.binding.MessageBindingError; import org.eclipse.packagedrone.web.controller.validator.ControllerValidator; import org.eclipse.packagedrone.web.controller.validator.ValidationContext; public class AbstractUserCreationController { protected UserStorage storage; protected PasswordChecker passwordChecker; public void setStorage ( final UserStorage storage ) { this.storage = storage; } public void setPasswordChecker ( final PasswordChecker passwordChecker ) { this.passwordChecker = passwordChecker; } @ControllerValidator ( formDataClass = CreateUser.class ) public void validateCreateUser ( final CreateUser createUser, final ValidationContext context ) { final DatabaseUserInformation user = this.storage.getUserDetailsByEmail ( createUser.getEmail () ); if ( user != null ) { context.error ( "email", "A user is already registered for this e-mail address" ); context.setMarker ( "duplicateEmail" ); } if ( createUser.getPassword () != null && !createUser.getPassword ().isEmpty () ) { checkPassword ( createUser.getPassword (), context ); } } @ControllerValidator ( formDataClass = NewPassword.class ) public void validatePassword ( final NewPassword data, final ValidationContext context ) { checkPassword ( data.getPassword (), context ); } protected void checkPassword ( final String password, final ValidationContext context ) { try { this.passwordChecker.checkPassword ( password ); } catch ( final BadPasswordException e ) { context.error ( "password", new MessageBindingError ( e.getMessage () ) ); } } }