/*
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.tvm.identity.servlet;
import java.io.IOException;
import java.util.logging.Level;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.amazonaws.tvm.Utilities;
import com.amazonaws.tvm.identity.exception.DataAccessException;
import com.amazonaws.tvm.identity.exception.MissingParameterException;
/**
* Servlet implementation class UserRegisterServlet
*/
public class RegisterUserServlet extends RootServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
log.info("entering register user request");
// Validate parameters
log.info("Validate parameters");
String username, password;
try {
username = getRequiredParameter(request, "username");
password = getRequiredParameter(request, "password");
} catch (MissingParameterException e) {
log.warning("Missing parameter: " + e.getMessage() + ". Setting Http status code "
+ HttpServletResponse.SC_BAD_REQUEST);
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
forward(request, response, "/mpe.jsp");
return;
}
String endpoint = Utilities.getEndPoint(request);
log.info(String.format("Register user: username [%s], endpoint [%s]", username, endpoint));
log.info("Validate username and password");
if (!Utilities.isValidUsername(username) || !Utilities.isValidPassword(password)) {
log.warning(String.format("Invalid parameters: username [%s] or password", username));
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
forward(request, response, "/mpe.jsp");
return;
}
try {
log.info("Register user: " + username);
boolean result = tvm.registerUser(username, password, endpoint);
if (!result) {
log.warning(String.format("Duplicate registration [%s]", username));
response.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
forward(request, response, getServletParameter(this, "error"));
return;
}
} catch (DataAccessException e) {
log.log(Level.SEVERE, String.format("Failed to register user [%s]", username), e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
forward(request, response, getServletParameter(this, "error"));
return;
}
response.setStatus(HttpServletResponse.SC_OK);
log.info(String.format("User [%s] registered successfully", username));
forward(request, response, getServletParameter(this, "success"));
return;
}
}