Created
September 3, 2015 13:39
-
-
Save cfalzone/b67c0d49c349b22256c3 to your computer and use it in GitHub Desktop.
A User Creation JSP for dotCMS. Create users from CSV File
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@page import="java.util.Map"%> | |
<%@page import="com.dotmarketing.util.UUIDGenerator"%> | |
<%@page import="com.dotmarketing.business.UserProxyAPI"%> | |
<%@page import="com.dotmarketing.cms.factories.PublicCompanyFactory"%> | |
<%@page import="com.dotmarketing.cms.factories.PublicAddressFactory"%> | |
<%@page import="com.liferay.portal.model.Address"%> | |
<%@page import="com.dotmarketing.factories.InodeFactory"%> | |
<%@page import="com.dotmarketing.beans.UserProxy"%> | |
<%@page import="com.dotmarketing.cms.factories.PublicEncryptionFactory"%> | |
<%@page import="java.util.Date"%> | |
<%@page import="com.dotmarketing.business.UserAPI"%> | |
<%@page import="com.dotmarketing.business.APILocator"%> | |
<%@page import="com.liferay.portal.model.User"%> | |
<%@page import="java.util.ArrayList"%> | |
<%@page import="java.util.HashMap"%> | |
<%@page import="java.util.Scanner"%> | |
<%@page import="com.dotmarketing.util.UtilMethods"%> | |
<%@page import="java.util.List"%> | |
<%@page import="org.apache.commons.fileupload.FileItem"%> | |
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> | |
<%@page import="com.dotmarketing.util.Logger"%> | |
<%@page import="java.io.InputStreamReader"%> | |
<%@page import="java.io.BufferedReader"%> | |
<%@page import="java.io.ByteArrayInputStream"%> | |
<%@page import="java.io.InputStream"%> | |
<%@page import="org.apache.commons.fileupload.FileItemFactory"%> | |
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> | |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
<title>Bulk Create Users</title> | |
</head> | |
<body> | |
<h1>Bulk Create Users</h1> | |
<% | |
UserAPI userAPI = APILocator.getUserAPI(); | |
UserProxyAPI userProxyAPI = APILocator.getUserProxyAPI(); | |
User sysUser = userAPI.getSystemUser(); | |
String companyId = PublicCompanyFactory.getDefaultCompany().getCompanyId(); | |
boolean processed = false; | |
if(ServletFileUpload.isMultipartContent(request)) { | |
FileItemFactory factory = new DiskFileItemFactory(); | |
ServletFileUpload upload = new ServletFileUpload(factory); | |
List<HashMap<String,String>> users = new ArrayList<HashMap<String,String>>(); | |
try { | |
List<FileItem> items = upload.parseRequest(request); | |
for(FileItem item : items) { | |
if(! item.isFormField()) { | |
byte[] data = item.get(); | |
InputStream is = new ByteArrayInputStream(data); | |
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); | |
try { | |
String line; | |
while((line = br.readLine()) != null) { | |
String[] values = line.split(","); | |
HashMap<String, String> r = new HashMap<String, String>(); | |
r.put("firstName", values[0]); | |
r.put("lastName", values[1]); | |
r.put("email", values[2]); | |
users.add(r); | |
} | |
} catch (Exception e) { | |
out.println("<p>Failed to read csvFile from Stream</p>"); | |
Logger.error(this, "Exception trying to read csvFile from Stream", e); | |
} finally { | |
try { | |
br.close(); | |
} catch (Exception e) { | |
out.println("<p>Failed to close Streams</p>"); | |
Logger.error(this, "Exception trying to close Streams", e); | |
} | |
} | |
} | |
} | |
} catch (Exception e) { | |
out.println("<p>Could not parse request</p>"); | |
Logger.error(this, "Exception trying to read csvFile from Stream", e); | |
} | |
if(users.size() > 0) { | |
out.println("<p>Created Users:</p><ul>"); | |
for(HashMap<String,String> userMap : users) { | |
// Check if the user already exists | |
User userDuplicated = null; | |
try { | |
userDuplicated = userAPI.loadByUserByEmail(userMap.get("email"), sysUser, false); | |
} catch (Exception e) { } | |
User user = null; | |
if (userDuplicated == null) { | |
// Create a New User | |
user = userAPI.createUser(null, null); | |
user.setCreateDate(new Date()); | |
user.setGreeting("Welcome, " + userMap.get("firstName") + " " + userMap.get("lastName") + "!"); | |
user.setFirstName(userMap.get("firstName")); | |
user.setMiddleName(""); | |
user.setLastName(userMap.get("lastName")); | |
user.setNickName(""); | |
user.setEmailAddress(userMap.get("email").trim().toLowerCase()); | |
user.setBirthday(null); | |
// Create A password for this user | |
String password = PublicEncryptionFactory.getRandomPassword(); | |
user.setActive(true); | |
user.setPassword(PublicEncryptionFactory.digestString(password)); | |
user.setPasswordEncrypted(true); | |
// Save the user | |
APILocator.getUserAPI().save(user, sysUser, false); | |
// Create a userProxy | |
UserProxy userProxy = userProxyAPI.getUserProxy(user, sysUser, false); | |
String userProxyInode = userProxy.getInode(); | |
userProxy = (UserProxy) InodeFactory.getInode(userProxyInode, UserProxy.class); | |
userProxy.setInode(userProxyInode); | |
userProxy.setUserId(user.getUserId()); | |
userProxyAPI.saveUserProxy(userProxy, sysUser, false); | |
userProxyInode = userProxy.getInode(); | |
// Create an Address | |
Address address = PublicAddressFactory.getInstance(); | |
address.setUserName(user.getFullName()); | |
address.setCompanyId(companyId); | |
address.setUserId(user.getUserId()); | |
Date today = new Date(); | |
address.setCreateDate(today); | |
address.setModifiedDate(today); | |
address.setPriority(1); | |
address.setClassName(user.getClass().getName()); | |
address.setClassPK(user.getUserId()); | |
address.setDescription("Primary"); | |
address.setStreet1("123 Fake Street"); | |
address.setStreet2(""); | |
address.setCountry("USA"); | |
address.setCity("Waterford"); | |
address.setState("PA"); | |
address.setZip("16441"); | |
address.setPhone("(814) 814-8144"); | |
address.setFax(""); | |
address.setCell(""); | |
PublicAddressFactory.save(address); | |
// HERE IS WHERE YOU CAN ASSIGN A ROLE TO THE USER | |
out.println("<li>User Created - "+userMap.get("email")+" - "+password+"</li>"); | |
} else { | |
out.println("<li>User Exists - "+userMap.get("email")+"</li>"); | |
user = userDuplicated; | |
} | |
} | |
processed = true; | |
} else { | |
out.println("<p>No Users Found</p>"); | |
} | |
} | |
if(!processed) { | |
%> | |
<form action="/CreateUsers.jsp" method="post" enctype="multipart/form-data"> | |
<p><label for="csvFile">Users CSV File:</label><input type="file" name="csvFile" id="csvFile" /></p> | |
<p><input type="submit" value="Submit" /></p> | |
</form> | |
<% | |
} | |
%> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment