001/* 002 Licensed to the Apache Software Foundation (ASF) under one 003 or more contributor license agreements. See the NOTICE file 004 distributed with this work for additional information 005 regarding copyright ownership. The ASF licenses this file 006 to you under the Apache License, Version 2.0 (the 007 "License"); you may not use this file except in compliance 008 with the License. You may obtain a copy of the License at 009 010 http://www.apache.org/licenses/LICENSE-2.0 011 012 Unless required by applicable law or agreed to in writing, 013 software distributed under the License is distributed on an 014 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 KIND, either express or implied. See the License for the 016 specific language governing permissions and limitations 017 under the License. 018 */ 019package org.apache.wiki.ui.admin.beans; 020 021import java.util.Date; 022 023import javax.management.NotCompliantMBeanException; 024import javax.servlet.http.HttpServletRequest; 025 026import org.apache.wiki.WikiContext; 027import org.apache.wiki.WikiEngine; 028import org.apache.wiki.WikiSession; 029import org.apache.wiki.auth.NoSuchPrincipalException; 030import org.apache.wiki.auth.UserManager; 031import org.apache.wiki.auth.WikiSecurityException; 032import org.apache.wiki.auth.user.UserProfile; 033import org.apache.wiki.ui.admin.AdminBean; 034import org.apache.wiki.ui.admin.SimpleAdminBean; 035 036 037public class UserBean extends SimpleAdminBean 038{ 039 public UserBean( WikiEngine engine ) throws NotCompliantMBeanException 040 { 041 super(); 042 } 043 044 public String[] getAttributeNames() 045 { 046 return new String[0]; 047 } 048 049 // FIXME: We don't yet support MBean for this kind of stuff. 050 public String[] getMethodNames() 051 { 052 return new String[0]; 053 } 054 055 056 057 public String doPost(WikiContext context) 058 { 059 HttpServletRequest request = context.getHttpRequest(); 060 WikiSession session = context.getWikiSession(); 061 UserManager mgr = context.getEngine().getUserManager(); 062 063 String loginid = request.getParameter("loginid"); 064 String loginname = request.getParameter("loginname"); 065 String fullname = request.getParameter("fullname"); 066 String password = request.getParameter("password"); 067 String password2 = request.getParameter("password2"); 068 String email = request.getParameter("email"); 069 070 071 if( request.getParameter("action").equalsIgnoreCase("remove") ) 072 { 073 try 074 { 075 mgr.getUserDatabase().deleteByLoginName(loginid); 076 session.addMessage("User profile "+loginid+" ("+fullname+") has been deleted"); 077 } 078 catch (NoSuchPrincipalException e) 079 { 080 session.addMessage("User profile has already been removed"); 081 } 082 catch (WikiSecurityException e) 083 { 084 session.addMessage("Security problem: "+e); 085 } 086 return ""; 087 } 088 089 090 if( password != null && password.length() > 0 && !password.equals(password2) ) 091 { 092 session.addMessage("Passwords do not match!"); 093 return ""; 094 } 095 096 UserProfile p; 097 098 if( loginid.equals("--New--") ) 099 { 100 // Create new user 101 102 p = mgr.getUserDatabase().newProfile(); 103 p.setCreated( new Date() ); 104 } 105 else 106 { 107 try 108 { 109 p = mgr.getUserDatabase().findByLoginName( loginid ); 110 } 111 catch (NoSuchPrincipalException e) 112 { 113 session.addMessage("I could not find user profile "+loginid); 114 return ""; 115 } 116 } 117 118 p.setEmail(email); 119 p.setFullname(fullname); 120 if( password != null && password.length() > 0 ) p.setPassword(password); 121 p.setLoginName(loginname); 122 123 try 124 { 125 mgr.getUserDatabase().save( p ); 126 } 127 catch( WikiSecurityException e ) 128 { 129 session.addMessage("Unable to save "+e.getMessage()); 130 } 131 132 session.addMessage("User profile has been updated"); 133 134 return ""; 135 } 136 137 public String getTitle() 138 { 139 return "User administration"; 140 } 141 142 public int getType() 143 { 144 return AdminBean.UNKNOWN; 145 } 146 147}