% /** * $RCSfile: account.jsp,v $ * $Revision: 1.3 $ * $Date: 2005/07/17 16:48:05 $ */ %> <%@ page import="java.io.*, java.text.*, java.util.*, java.net.*, com.Yasna.forum.*, com.Yasna.forum.util.*" errorPage="error.jsp" %> <%! final int CREATE = 1; final int MANAGE = 2; final int PASSWORD = 3; final int LOGIN = 4; final int VIEW = 5; %> <% //////////////////////// // Authorization check // check for the existence of an authorization token Authorization authToken = SkinUtils.getUserAuthorization(request,response); // if the token was null, they're not authorized. Since this skin will // allow guests to view forums, we'll set a "guest" authentication // token if( authToken == null ) { authToken = AuthorizationFactory.getAnonymousAuthorization(); } %> <% // Get parameters int mode = ParamUtils.getIntParameter(request, "mode", -1); int userID = ParamUtils.getIntParameter(request, "user", -1); int forumID = ParamUtils.getIntParameter(request, "forum", -1); boolean doCreate = ParamUtils.getBooleanParameter(request, "doCreate"); String username = ParamUtils.getParameter(request, "username"); // required to create account String password = ParamUtils.getParameter(request, "password"); // required to create account String password2 = ParamUtils.getParameter(request, "password2"); // required to create account String email = ParamUtils.getParameter(request, "email"); // required to create account String URL = ParamUtils.getParameter(request, "URL"); String name = ParamUtils.getParameter(request, "name"); String sig = ParamUtils.getParameter(request, "signature"); boolean receiveMail = ParamUtils.getCheckboxParameter(request, "receiveMail"); boolean emailVisible= ParamUtils.getCheckboxParameter(request, "emailVisible"); boolean nameVisible = ParamUtils.getCheckboxParameter(request, "nameVisible"); boolean autoLogin = ParamUtils.getCheckboxParameter(request, "autoLogin"); String message = ParamUtils.getParameter(request, "message"); if (message == null) message = ""; boolean emailOK = ( email != null && email.length() != 0 ); boolean usernameOK = ( username != null && username.length() != 0 ); boolean passwordOK = ( password != null && password.length() != 0 ); passwordOK = ((mode == LOGIN && passwordOK) || (mode == CREATE && (passwordOK && password.equals(password2))) || (mode == MANAGE && ((password == null && password2 == null) || (passwordOK && password.equals(password2)))) ); boolean requiredParamsOK = ( emailOK && usernameOK && passwordOK ); boolean createSuccess = false; String redirectPage = "account.jsp?mode=" + mode; User user = null; %> <% // Create a ForumFactory object ForumFactory forumFactory = ForumFactory.getInstance(authToken); ProfileManager manager = forumFactory.getProfileManager(); %> <% // Login in if (mode == LOGIN) { // check to make sure the username and password are valid (ie, not null or blank) if( !usernameOK || !passwordOK ) { message = "Login failed. Please make sure your username and password are correct."; response.sendRedirect( "account.jsp?message=" + URLEncoder.encode(message) ); return; } else { try { // get the user's authorization token authToken = SkinUtils.setUserAuthorization(request, response, username, password, autoLogin); // redirect to the main page response.sendRedirect( "index.jsp" ); return; } catch( UnauthorizedException ue ) { message = "Login failed. Please make sure your username and password are correct."; response.sendRedirect( "account.jsp?message=" + URLEncoder.encode(message) ); return; } } } // Create a new user, or change your account // check to make sure username, password and email are valid (ie, not null or blank) else if (doCreate && requiredParamsOK && (mode == CREATE || mode == MANAGE)) { try { if (mode == CREATE) { user = manager.createUser(username, password, email); // throws a UserAlreadyExistsException message = "Account created successfully!"; } else { user = manager.getUser(authToken.getUserID()); message = "Account updated successfully!"; } if (name != null && !name.equals(user.getName())) { user.setName(name); } if (password != null && mode == MANAGE) { user.setPassword(password); } if (email != null && !email.equals(user.getEmail())) { user.setEmail(email); } if (nameVisible != user.isNameVisible()) { user.setNameVisible(nameVisible); } if (receiveMail != user.getEmailReply()) { user.setEmailReply(receiveMail); } if (emailVisible != user.isEmailVisible()) { user.setEmailVisible(emailVisible); } // IP, URL and Signature are extended properties: if (!request.getRemoteAddr().equals(user.getProperty("IP"))) { user.setProperty("IP", request.getRemoteAddr()); } if (URL != null && !URL.equals(user.getProperty("URL"))) { user.setProperty("URL", URL); } if (sig != null && !sig.equals(user.getProperty("sig"))) { user.setProperty("sig", sig); } if (mode == CREATE) { authToken = SkinUtils.setUserAuthorization(request, response, username, password, autoLogin); } response.sendRedirect( redirectPage + "&message=" + URLEncoder.encode(message) ); return; } catch (UserNotActivatedException unae) { message = "Successfully created user. You will receive email that asks you to activate your account. After activation, you may login and then post to the forum."; response.sendRedirect( "account.jsp"+ "?message=" + URLEncoder.encode(message) ); return; } catch( UserAlreadyExistsException uaee ) { message = "Sorry, that username is taken."; response.sendRedirect( redirectPage +"&message=" + URLEncoder.encode(message) ); return; } catch( UserNotFoundException unfe ) { message = "Oops, you do not seem to exist."; response.sendRedirect( redirectPage +"&message=" + URLEncoder.encode(message) ); return; } catch( UnauthorizedException ue ) { java.io.StringWriter sw = new java.io.StringWriter(); ue.printStackTrace(new PrintWriter(sw,true)); message = "You are not authorized." + ue.getMessage() + " " + sw.toString(); response.sendRedirect( redirectPage +"&message=" + URLEncoder.encode(message) ); return; } } // View or Update a users attributes // check to make sure username, password and email are valid (ie, not null or blank) else if (!doCreate && (mode == VIEW || mode == MANAGE)) { try { if (mode == VIEW) { // userID? user = manager.getUser(authToken.getUserID()); message = "Account created successfully!"; } else { user = manager.getUser(authToken.getUserID()); } username = user.getUsername(); name = user.getName(); if (name == null) { name = (mode == VIEW) ? "Not visible" : ""; } email = user.getEmail(); if (email == null) { email = (mode == VIEW) ? "Not visible" : ""; } nameVisible = user.isNameVisible(); emailVisible = user.isEmailVisible(); URL = user.getProperty("URL"); sig = user.getProperty("sig"); } catch( UserNotFoundException unfe ) { message = "Oops, you do not seem to exist."; response.sendRedirect( redirectPage +"&message=" + URLEncoder.encode(message) ); return; } } else if (!doCreate && (mode == CREATE)) { nameVisible = true; emailVisible = true; } %> <% // header include String title = "Manage Your Account"; %> <%@ include file="header.jsp" %> <%-- begin breadcrumbs --%> Home > <% if( mode > 0 ) { %> User Account > <% if( mode == CREATE ) { %> Create an account <% } else if( mode == MANAGE ) { %> Manage your account <% } else if( mode == PASSWORD ) { %> Password help <% } else if( mode == LOGIN ) { %> User Account Login <% } else { %> <% } %> <% } else { %> User Account Login <% } %> <%-- end breadcrubms --%>
<%= message %>
<% if(mode == CREATE || mode == MANAGE) { %>
<% // if we're trying to create a user and there's an error, print a message: if( !createSuccess && doCreate ) { %> User account creation failed. Please correct the marked fields. <% } %>
Don't have an account? Create one
Forget your password?
<% } else { %>
You are logged in <%= user.getUsername() %>.
[logout]
<% } %>