You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/06/10 17:46:41 UTC

svn commit: r1601669 [3/7] - in /openmeetings: branches/3.0.x/WebContent/src/modules/invitation/ branches/3.0.x/docs/ branches/3.0.x/src/axis/java/org/apache/openmeetings/axis/services/ branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/basic/ b...

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java Tue Jun 10 15:46:38 2014
@@ -106,31 +106,25 @@ public class ConferenceService {
 			long organisation_id, long roomtypes_id) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-
-			log.debug("getRoomsByOrganisationAndType");
-
-			if (user_level == null) {
-				return null;
-			}
-			List<RoomOrganisation> roomOrgsList = roomManager
-					.getRoomsOrganisationByOrganisationIdAndRoomType(
-							user_level, organisation_id, roomtypes_id);
-
-			List<RoomOrganisation> filtered = new ArrayList<RoomOrganisation>();
-
-			for (Iterator<RoomOrganisation> iter = roomOrgsList.iterator(); iter
-					.hasNext();) {
-				RoomOrganisation orgRoom = iter.next();
-
-				if (!orgRoom.getRoom().getAppointment()) {
-					orgRoom.getRoom().setCurrentusers(
-							this.getRoomClientsListByRoomId(orgRoom.getRoom()
-									.getRooms_id()));
-					filtered.add(orgRoom);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				log.debug("getRoomsByOrganisationAndType");
+				List<RoomOrganisation> roomOrgsList = roomManager.getRoomsOrganisationByOrganisationIdAndRoomType(organisation_id, roomtypes_id);
+	
+				List<RoomOrganisation> filtered = new ArrayList<RoomOrganisation>();
+	
+				for (Iterator<RoomOrganisation> iter = roomOrgsList.iterator(); iter
+						.hasNext();) {
+					RoomOrganisation orgRoom = iter.next();
+	
+					if (!orgRoom.getRoom().getAppointment()) {
+						orgRoom.getRoom().setCurrentusers(
+								this.getRoomClientsListByRoomId(orgRoom.getRoom()
+										.getRooms_id()));
+						filtered.add(orgRoom);
+					}
 				}
+				return filtered;
 			}
-			return filtered;
 		} catch (Exception err) {
 			log.error("[getRoomsByOrganisationAndType]", err);
 		}
@@ -141,22 +135,16 @@ public class ConferenceService {
 			String SID, long organisation_id) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-
-			log.debug("getRoomsByOrganisationAndType");
-
-			if (user_level == null) {
-				return null;
-			}
-			List<RoomOrganisation> roomOrgsList = roomManager
-					.getRoomsOrganisationByOrganisationId(user_level,
-							organisation_id);
-			
-			for (RoomOrganisation roomOrg : roomOrgsList) {
-				roomOrg.getRoom().setCurrentusers(sessionManager.getClientListByRoom(roomOrg.getRoom().getRooms_id()));
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				log.debug("getRoomsByOrganisationAndType");
+				List<RoomOrganisation> roomOrgsList = roomManager.getRoomsOrganisationByOrganisationId(organisation_id);
+				
+				for (RoomOrganisation roomOrg : roomOrgsList) {
+					roomOrg.getRoom().setCurrentusers(sessionManager.getClientListByRoom(roomOrg.getRoom().getRooms_id()));
+				}
+	
+				return roomOrgsList;
 			}
-
-			return roomOrgsList;
 		} catch (Exception err) {
 			log.error("[getRoomsByOrganisationAndType]", err);
 		}
@@ -178,11 +166,10 @@ public class ConferenceService {
 		log.debug("getRoomsByOrganisation");
 
 		Long user_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByIdAndOrg(user_id,
-				organisation_id);
-
-		return roomManager.getRoomsOrganisationByOrganisationId(user_level,
-				organisation_id, start, max, orderby, asc);
+		if (AuthLevelUtil.hasModLevel(userDao.get(user_id), organisation_id)) {
+			return roomManager.getRoomsOrganisationsByOrganisationId(organisation_id, start, max, orderby, asc);
+		}
+		return null;
 	}
 
 	/**
@@ -197,26 +184,25 @@ public class ConferenceService {
 			log.debug("getRoomsPublic");
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long User_level = userManager.getUserLevelByID(users_id);
-			log.error("getRoomsPublic user_level: " + User_level);
-
-			List<Room> roomList = roomManager.getPublicRooms(User_level,
-					roomtypes_id);
-
-			// Filter : no appointed meetings
-			List<Room> filtered = new ArrayList<Room>();
-
-			for (Iterator<Room> iter = roomList.iterator(); iter.hasNext();) {
-				Room rooms = iter.next();
-
-				if (!rooms.getAppointment()) {
-					rooms.setCurrentusers(this.getRoomClientsListByRoomId(rooms
-							.getRooms_id()));
-					filtered.add(rooms);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+	
+				List<Room> roomList = roomDao.getPublicRooms(roomtypes_id);
+	
+				// Filter : no appointed meetings
+				List<Room> filtered = new ArrayList<Room>();
+	
+				for (Iterator<Room> iter = roomList.iterator(); iter.hasNext();) {
+					Room rooms = iter.next();
+	
+					if (!rooms.getAppointment()) {
+						rooms.setCurrentusers(this.getRoomClientsListByRoomId(rooms
+								.getRooms_id()));
+						filtered.add(rooms);
+					}
 				}
+	
+				return filtered;
 			}
-
-			return filtered;
 		} catch (Exception err) {
 			log.error("[getRoomsByOrganisationAndType]", err);
 		}
@@ -227,16 +213,16 @@ public class ConferenceService {
 		try {
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			log.debug("getRoomsPublic user_level: " + user_level);
-
-			List<Room> roomList = roomDao.getPublicRooms();
-			
-			for (Room room : roomList) {
-				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+	
+				List<Room> roomList = roomDao.getPublicRooms();
+				
+				for (Room room : roomList) {
+					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+				}
+	
+				return roomList;
 			}
-
-			return roomList;
 		} catch (Exception err) {
 			log.error("[getRoomsPublicWithoutType]", err);
 		}
@@ -342,9 +328,8 @@ public class ConferenceService {
 		log.debug("ConferenceService.getAppointedMeetings");
 
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
 
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 			List<Appointment> points = appointmentLogic
 					.getTodaysAppointmentsForUser(users_id);
@@ -382,9 +367,8 @@ public class ConferenceService {
 		log.debug("ConferenceService.getAppointedMeetings");
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				List<Appointment> appointments = appointmentLogic
 						.getTodaysAppointmentsForUser(users_id);
 				List<Room> result = new ArrayList<Room>();
@@ -418,8 +402,7 @@ public class ConferenceService {
 	 */
 	public List<RoomType> getRoomTypes(String SID) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			User user = userDao.get(users_id);
 			return roomTypeDao.getAll(user == null
 					? cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1") : user.getLanguage_id());
@@ -435,15 +418,19 @@ public class ConferenceService {
 	 */
 	public Room getRoomById(String SID, long rooms_id) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRoomById(user_level, rooms_id);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return roomDao.get(rooms_id);
+		}
+		return null;
 	}
 
 	public Room getRoomWithCurrentUsersById(String SID, long rooms_id) {
+		Room room = null;
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		Room room = roomManager.getRoomById(user_level, rooms_id);
-		room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			room = roomDao.get(rooms_id);
+			room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+		}
 		return room;
 	}
 
@@ -455,12 +442,12 @@ public class ConferenceService {
 	 * @param roomtypes_id
 	 * @return - room with the given external id
 	 */
-	public Room getRoomByExternalId(String SID, Long externalUserId,
-			String externalUserType, long roomtypes_id) {
+	public Room getRoomByExternalId(String SID, Long externalUserId, String externalUserType, long roomtypes_id) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRoomByExternalId(user_level, externalUserId,
-				externalUserType, roomtypes_id);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomByExternalId(externalUserId, externalUserType, roomtypes_id);
+		}
+		return null;
 	}
 
 	/**
@@ -478,9 +465,10 @@ public class ConferenceService {
 		log.debug("getRooms");
 
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRooms(user_level, start, max, orderby, asc,
-				search);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRooms(start, max, orderby, asc, search);
+		}
+		return null;
 	}
 
 	public SearchResult<Room> getRoomsWithCurrentUsers(String SID, int start,
@@ -488,9 +476,10 @@ public class ConferenceService {
 		log.debug("getRooms");
 
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRoomsWithCurrentUsers(user_level, start, max,
-				orderby, asc);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsers(start, max, orderby, asc);
+		}
+		return null;
 	}
 
 	public List<RoomModerator> getRoomModeratorsByRoomId(String SID,
@@ -498,9 +487,8 @@ public class ConferenceService {
 		try {
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				return roomModeratorsDao.getByRoomId(roomId);
 
@@ -522,8 +510,10 @@ public class ConferenceService {
 	 */
 	public Long deleteRoom(String SID, long rooms_id) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.deleteRoomById(user_level, rooms_id);
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			return roomManager.deleteRoomById(rooms_id);
+		}
+		return null;
 	}
 	
 	/**
@@ -558,32 +548,29 @@ public class ConferenceService {
 		return sessionManager.getClientListByRoom(room_id);
 	}
 
-	public List<Room> getRoomsWithCurrentUsersByList(String SID, int start,
-			int max, String orderby, boolean asc) {
-		log.debug("getRooms");
+	public List<Room> getRoomsWithCurrentUsersByList(String SID, int start, int max, String orderby, boolean asc) {
+		log.debug("getRoomsWithCurrentUsersByList");
 
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRoomsWithCurrentUsersByList(user_level, start,
-				max, orderby, asc);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsersByList(start, max, orderby, asc);
+		}
+		return null;
 	}
 
-	public List<Room> getRoomsWithCurrentUsersByListAndType(String SID,
-			int start, int max, String orderby, boolean asc,
-			String externalRoomType) {
-		log.debug("getRooms");
+	public List<Room> getRoomsWithCurrentUsersByListAndType(String SID, int start, int max, String orderby, boolean asc, String externalRoomType) {
+		log.debug("getRoomsWithCurrentUsersByListAndType");
 
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return roomManager.getRoomsWithCurrentUsersByListAndType(user_level,
-				start, max, orderby, asc, externalRoomType);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsersByListAndType(start, max, orderby, asc, externalRoomType);
+		}
+		return null;
 	}
 
-	public Room getRoomByOwnerAndType(String SID, Long roomtypesId,
-			String roomName) {
+	public Room getRoomByOwnerAndType(String SID, Long roomtypesId, String roomName) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			return roomManager.getRoomByOwnerAndTypeId(users_id,
 					roomtypesId, roomName);
 		}
@@ -600,8 +587,7 @@ public class ConferenceService {
 	 */
 	public ServerDTO getServerForSession(String SID, long roomId) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			List<Server> serverList = serverDao.getActiveServers();
 
 			long minimum = -1;

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Tue Jun 10 15:46:38 2014
@@ -30,7 +30,6 @@ import org.apache.openmeetings.data.flvr
 import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask;
 import org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask;
 import org.apache.openmeetings.data.flvrecord.listener.StreamListener;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
@@ -74,7 +73,7 @@ public class FLVRecorderService implemen
 	@Autowired
 	private FlvRecordingDao flvRecordingDaoImpl;
 	@Autowired
-	private UserDao usersDaoImpl;
+	private UserDao userDao;
 	@Autowired
 	private RoomDao roomDao;
 	@Autowired
@@ -90,8 +89,6 @@ public class FLVRecorderService implemen
 	@Autowired
 	private SessiondataDao sessiondataDao;
 	@Autowired
-	private UserManager userManager;
-	@Autowired
 	private ScopeApplicationAdapter scopeApplicationAdapter;
 	@Autowired
 	private FlvRecordingMetaDeltaDao metaDeltaDao;
@@ -537,8 +534,7 @@ public class FLVRecorderService implemen
 			Integer rightSideTime) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				log.debug("updateFileOrFolderName " + flvRecordingId);
 

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java Tue Jun 10 15:46:38 2014
@@ -23,7 +23,6 @@ import static org.apache.openmeetings.ut
 import java.util.Calendar;
 
 import org.apache.openmeetings.data.conference.InvitationManager;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -49,8 +48,6 @@ public class InvitationService implement
 	@Autowired
 	private UserDao userDao;
 	@Autowired
-	private UserManager userManager;
-	@Autowired
 	private InvitationManager invitationManager;
 	@Autowired
 	private TimezoneUtil timezoneUtil;
@@ -78,7 +75,8 @@ public class InvitationService implement
 	 * send an invitation to another user by Mail
 	 * 
 	 * @param SID
-	 * @param username
+	 * @param firstname
+	 * @param lastname
 	 * @param message
 	 * @param email
 	 * @param subject
@@ -104,9 +102,8 @@ public class InvitationService implement
 
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				log.debug("sendInvitationHash: ");
 	
 				Calendar calFrom = getDate(validFromDate, validFromTime, iCalTz);
@@ -141,9 +138,8 @@ public class InvitationService implement
 	public String sendInvitationByHash(String SID, String invitationHash, String message, String subject
 			, Long language_id) throws Exception {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
 
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			Invitation inv = (Invitation)invitationManager.getInvitationByHashCode(invitationHash, true);
 			inv.getInvitee().setLanguage_id(language_id);
 			invitationManager.sendInvitionLink(inv, MessageType.Create, subject, message, false);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java Tue Jun 10 15:46:38 2014
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.TimeZone;
 
 import org.apache.openmeetings.data.conference.InvitationManager;
@@ -45,8 +46,11 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
 import org.apache.openmeetings.db.entity.server.SOAPLogin;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.Userdata;
+import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.ldap.LdapLoginManagement;
 import org.apache.openmeetings.mail.MailHandler;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
@@ -88,7 +92,7 @@ public class MainService implements IPen
 	@Autowired
 	private ConferenceLogDao conferenceLogDao;
 	@Autowired
-	private UserDao usersDao;
+	private UserDao userDao;
 	@Autowired
 	private LdapConfigDao ldapConfigDao;
 	@Autowired
@@ -99,6 +103,8 @@ public class MainService implements IPen
 	private LdapLoginManagement ldapLoginManagement;
 	@Autowired
 	private MailHandler mailHandler;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
 
 	// External User Types
 	public static final String EXTERNAL_USER_TYPE_LDAP = "LDAP";
@@ -114,9 +120,9 @@ public class MainService implements IPen
 	public User getUser(String SID, int USER_ID) {
 		User users = new User();
 		Long users_id = sessiondataDao.checkSession(SID);
-		long user_level = userManager.getUserLevelByID(users_id);
-		if (user_level > 2) {
-			users = usersDao.get(new Long(USER_ID));
+		Set<Right> rights = userDao.getRights(users_id);
+		if (AuthLevelUtil.hasAdminLevel(rights) || AuthLevelUtil.hasWebServiceLevel(rights)) {
+			users = userDao.get(new Long(USER_ID));
 		} else {
 			users.setFirstname("No rights to do this");
 		}
@@ -161,7 +167,7 @@ public class MainService implements IPen
 
 	public User loginWicket(String SID, String wicketSID, Long wicketroomid) {
 		Long userId = sessiondataDao.checkSession(wicketSID);
-		User u = userId == null ? null : usersDao.get(userId);
+		User u = userId == null ? null : userDao.get(userId);
 		if (u != null) {
 			IConnection current = Red5.getConnectionLocal();
 			String streamId = current.getClient().getId();
@@ -318,8 +324,7 @@ public class MainService implements IPen
 	public Long loginUserByRemote(String SID) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkWebServiceLevel(user_level)) {
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
 				Sessiondata sd = sessiondataDao.getSessionByHash(SID);
 				if (sd == null || sd.getSessionXml() == null) {
 					return new Long(-37);
@@ -339,31 +344,26 @@ public class MainService implements IPen
 						// If so we need to check that we create this user in
 						// OpenMeetings and update its record
 
-						User user = usersDao.getExternalUser(userObject.getExternalUserId(),
-								userObject.getExternalUserType());
+						User user = userDao.getExternalUser(userObject.getExternalUserId(), userObject.getExternalUserType());
 
 						if (user == null) {
 							String iCalTz = configurationDao.getConfValue("default.timezone", String.class, "");
 
-							long userId = userManager
-									.addUserWithExternalKey(1, 0, 0,
-											userObject.getFirstname(),
-											userObject.getUsername(),
-											userObject.getLastname(), 1L,
-											true, "", // password is empty by default
-											null, null, "",
-											userObject.getExternalUserId(),
-											userObject.getExternalUserType(),
-											true, userObject.getEmail(),
-											iCalTz,
-											userObject.getPictureUrl());
+							Address a = userDao.getAddress(null, null, null, 1L, null, null, null, userObject.getEmail());
+
+							User u = userDao.addUser(UserDao.getDefaultRights(), userObject.getFirstname(), userObject.getUsername(),
+											userObject.getLastname(), 1L, "" // password is empty by default
+											, a, false, null, null, timezoneUtil.getTimeZone(iCalTz), false
+											, null, null, false, false, userObject.getExternalUserId()
+											, userObject.getExternalUserType(), null, userObject.getPictureUrl());
 
+							long userId = u.getUser_id();
 							currentClient.setUser_id(userId);
 							SessionVariablesUtil.setUserId(current.getClient(), userId);
 						} else {
 							user.setPictureuri(userObject.getPictureUrl());
 
-							usersDao.update(user, users_id);
+							userDao.update(user, users_id);
 
 							currentClient.setUser_id(user.getUser_id());
 							SessionVariablesUtil.setUserId(current.getClient(), user.getUser_id());
@@ -407,7 +407,7 @@ public class MainService implements IPen
 			
 			Long defaultRpcUserid = configurationDao.getConfValue(
 					"default.rpc.userid", Long.class, "-1");
-			User defaultRpcUser = usersDao.get(defaultRpcUserid);
+			User defaultRpcUser = userDao.get(defaultRpcUserid);
 			
 			User user = new User();
 			user.setOrganisation_users(defaultRpcUser.getOrganisation_users());
@@ -458,27 +458,9 @@ public class MainService implements IPen
 		return null;
 	}
 
-	/**
-	 * logs a user out and deletes his account
-	 * 
-	 * @param SID
-	 * @return - id of user being deleted, or error code
-	 */
-	public Long deleteUserIDSelf(String SID) {
-		Long users_id = sessiondataDao.checkSession(SID);
-		long user_level = userManager.getUserLevelByID(users_id);
-		if (user_level >= 1) {
-			userManager.logout(SID, users_id);
-			return usersDao.deleteUserID(users_id);
-		} else {
-			return new Long(-10);
-		}
-	}
-
 	public List<Userdata> getUserdata(String SID) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			return userManager.getUserdataDashBoard(users_id);
 		}
 		return null;
@@ -496,8 +478,7 @@ public class MainService implements IPen
 	public LinkedHashMap<Integer, Client> getUsersByDomain(String SID,
 			String domain) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			LinkedHashMap<Integer, Client> lMap = new LinkedHashMap<Integer, Client>();
 			// Integer counter = 0;
 			// for (Iterator<String> it =
@@ -517,8 +498,7 @@ public class MainService implements IPen
 	public int closeRoom(String SID, Long room_id, Boolean status) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				roomManager.closeRoom(room_id, status);
 

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PrintService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PrintService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PrintService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PrintService.java Tue Jun 10 15:46:38 2014
@@ -23,8 +23,8 @@ import java.util.HashMap;
 import java.util.List;
 
 import org.apache.openmeetings.batik.beans.PrintBean;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.crypt.MD5;
@@ -41,7 +41,7 @@ public class PrintService {
 	@Autowired
 	private SessiondataDao sessiondataDao;
     @Autowired
-    private UserManager userManager;
+    private UserDao userDao;
 	
 	/*
 	 * Export List
@@ -51,8 +51,7 @@ public class PrintService {
 	public String addPrintList(String SID, @SuppressWarnings("rawtypes") List map, int width, int height) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-	        Long user_level = userManager.getUserLevelByID(users_id);
-	        if (AuthLevelUtil.checkUserLevel(user_level)) {
+	        if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 	        	String hashRaw = ""+new Date();
 	        	String hash = MD5.do_checksum(hashRaw);
 	        	PrintService.addPrintItembyMap(hash, map, width, height);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java Tue Jun 10 15:46:38 2014
@@ -28,7 +28,6 @@ import org.apache.openmeetings.cluster.S
 import org.apache.openmeetings.data.basic.FieldManager;
 import org.apache.openmeetings.data.conference.InvitationManager;
 import org.apache.openmeetings.data.conference.RoomManager;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
@@ -89,8 +88,6 @@ public class UserService implements IUse
 	@Autowired
 	private ConfigurationDao configurationDao;
 	@Autowired
-	private UserManager userManager;
-	@Autowired
 	private UserDao userDao;
 	@Autowired
 	private FieldManager fieldManager;
@@ -132,8 +129,7 @@ public class UserService implements IUse
 	 */
 	public User getUserById(String SID, long user_id) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 			return userDao.get(user_id);
 		}
 		return null;
@@ -176,8 +172,7 @@ public class UserService implements IUse
 	 */
 	public List<User> getUserList(String SID, int start, int max, String orderby, boolean asc) {
 		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		if (AuthLevelUtil.checkAdminLevel(user_level)) {
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
 			return userDao.get("", start, max, orderby + (asc ? " ASC" : " DESC"));
 		}
 		return null;
@@ -197,9 +192,8 @@ public class UserService implements IUse
 	public Boolean kickUserByStreamId(String SID, String streamid, long serverId) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// admins only
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
+			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
 
 				if (serverId == 0) {
 
@@ -248,9 +242,8 @@ public class UserService implements IUse
 	public User updateUserSelfTimeZone(String SID, String jname) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				User us = userDao.get(users_id);
 
@@ -274,9 +267,8 @@ public class UserService implements IUse
 			String domain, String port, String webapp) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				return ContactsHelper.addUserToContactList(userToAdd_id);
 			}
 		} catch (Exception err) {
@@ -288,9 +280,8 @@ public class UserService implements IUse
 	public List<UserContact> getPendingUserContacts(String SID) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				List<UserContact> uList = userContactsDao
 						.getContactRequestsByUserAndStatus(users_id, true);
@@ -307,9 +298,8 @@ public class UserService implements IUse
 	public List<UserContact> getUserContacts(String SID) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				List<UserContact> uList = userContactsDao
 						.getContactsByUserAndStatus(users_id, false);
@@ -326,9 +316,8 @@ public class UserService implements IUse
 	public Integer removeContactUser(String SID, Long userContactId) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				UserContact userContacts = userContactsDao
 						.get(userContactId);
@@ -371,9 +360,8 @@ public class UserService implements IUse
 		try {
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				User from = userDao.get(users_id);
 				TimeZone timezone = timezoneUtil.getTimeZone(from);
 
@@ -449,9 +437,8 @@ public class UserService implements IUse
 	public Boolean checkUserIsInContactList(String SID, Long user_id) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				List<UserContact> uList = userContactsDao
 						.getContactsByUserAndStatus(users_id, false);
@@ -478,10 +465,9 @@ public class UserService implements IUse
 			Boolean shareCalendar) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				UserContact userContacts = userContactsDao
 						.get(userContactId);
@@ -512,9 +498,8 @@ public class UserService implements IUse
 	public Boolean kickUserByPublicSID(String SID, String publicSID) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				Client rcl = this.sessionManager.getClientByPublicSID(
 						publicSID, false, null);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java Tue Jun 10 15:46:38 2014
@@ -29,11 +29,11 @@ import java.util.LinkedList;
 import java.util.Map;
 
 import org.apache.commons.collections.ComparatorUtils;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.whiteboard.WhiteBoardObjectListManagerById;
 import org.apache.openmeetings.data.whiteboard.WhiteBoardObjectSyncManager;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.room.Cliparts;
 import org.apache.openmeetings.db.dto.room.WhiteboardObject;
 import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
@@ -61,7 +61,7 @@ public class WhiteBoardService implement
 	private static final Logger log = Red5LoggerFactory.getLogger(
 			WhiteBoardService.class, "openmeetings");
 	@Autowired
-	private UserManager userManager;
+	private UserDao userDao;
 	@Autowired
 	private final ScopeApplicationAdapter scopeApplicationAdapter = null;
 	@Autowired
@@ -195,9 +195,8 @@ public class WhiteBoardService implement
 					.getClientByStreamId(streamid, null);
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				if (currentClient.getIsMod()) {
 					Client rcl = this.sessionManager
@@ -237,9 +236,8 @@ public class WhiteBoardService implement
 					.getClientByStreamId(streamid, null);
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				if (currentClient.getIsMod()) {
 					Client rcl = this.sessionManager
@@ -279,9 +277,8 @@ public class WhiteBoardService implement
 					.getClientByStreamId(streamid, null);
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				if (currentClient.getIsMod()) {
 					Client rcl = this.sessionManager
@@ -321,9 +318,8 @@ public class WhiteBoardService implement
 					.getClientByStreamId(streamid, null);
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				if (currentClient.getIsMod()) {
 					Client rcl = this.sessionManager
 							.getClientByPublicSID(publicSID, false, null);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java Tue Jun 10 15:46:38 2014
@@ -18,12 +18,15 @@
  */
 package org.apache.openmeetings.servlet.outputhandler;
 
+import java.util.Set;
+
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.red5.logging.Red5LoggerFactory;
@@ -38,7 +41,7 @@ public abstract class AbstractUploadCont
 	@Autowired
 	protected SessiondataDao sessiondataDao;
 	@Autowired
-	protected UserManager userManager;
+	protected UserDao userDao;
 	@Autowired
 	protected ConfigurationDao configurationDao;
 	
@@ -62,14 +65,12 @@ public abstract class AbstractUploadCont
 			log.debug("sid: " + sid);
 
 			Long userId = sessiondataDao.checkSession(sid);
-			Long userLevel = userManager.getUserLevelByID(userId);
-			log.debug("userId = " + userId + ", userLevel = " + userLevel);
+			Set<Right> rights = userDao.getRights(userId);
+			log.debug("userId = " + userId);
 			info.userId = userId;
 
-			if ((admin && !AuthLevelUtil.checkAdminLevel(userLevel))
-					|| (!admin && userLevel <= 0)) {
-				throw new ServletException("Insufficient permissions "
-						+ userLevel);
+			if ((admin && !AuthLevelUtil.hasAdminLevel(rights)) || (!admin && rights.isEmpty())) {
+				throw new ServletException("Insufficient permissions " + rights);
 			}
 
 			String publicSID = request.getParameter("publicSID");

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java Tue Jun 10 15:46:38 2014
@@ -26,16 +26,18 @@ import static org.apache.openmeetings.ut
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.Set;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.servlet.BaseHttpServlet;
 import org.apache.openmeetings.servlet.ServerNotInitializedException;
 import org.apache.openmeetings.util.OmFileHelper;
@@ -98,9 +100,9 @@ public class DownloadHandler extends Bas
 			log.debug("sid: " + sid);
 
 			Long users_id = getBean(SessiondataDao.class).checkSession(sid);
-			Long user_level = getBean(UserManager.class).getUserLevelByID(users_id);
+			Set<Right> rights = getBean(UserDao.class).getRights(users_id);
 
-			if (user_level != null && user_level > 0) {
+			if (rights != null && !rights.isEmpty()) {
 				String room_id = httpServletRequest.getParameter("room_id");
 				if (room_id == null) {
 					room_id = "default";

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java Tue Jun 10 15:46:38 2014
@@ -25,6 +25,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -38,8 +39,9 @@ import org.apache.batik.transcoder.Trans
 import org.apache.batik.transcoder.image.JPEGTranscoder;
 import org.apache.openmeetings.batik.beans.PrintBean;
 import org.apache.openmeetings.data.record.WhiteboardMapToSVG;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.remote.PrintService;
 import org.apache.openmeetings.servlet.BaseHttpServlet;
 import org.apache.openmeetings.servlet.ServerNotInitializedException;
@@ -94,12 +96,11 @@ public class ExportToImage extends BaseH
 			}
 
 			Long users_id = getBean(SessiondataDao.class).checkSession(sid);
-			Long user_level = getBean(UserManager.class).getUserLevelByID(users_id);
+			Set<Right> rights = getBean(UserDao.class).getRights(users_id);
 
 			log.debug("users_id: " + users_id);
-			log.debug("user_level: " + user_level);
 
-			if (user_level != null && user_level > 0 && hash != "") {
+			if (rights != null && !rights.isEmpty() && hash != "") {
 
 				PrintBean pBean = PrintService.getPrintItemByHash(hash);
 

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml Tue Jun 10 15:46:38 2014
@@ -68,7 +68,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml Tue Jun 10 15:46:38 2014
@@ -68,7 +68,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml Tue Jun 10 15:46:38 2014
@@ -67,7 +67,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml Tue Jun 10 15:46:38 2014
@@ -68,7 +68,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml Tue Jun 10 15:46:38 2014
@@ -68,7 +68,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml Tue Jun 10 15:46:38 2014
@@ -68,7 +68,6 @@
 		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
 		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
 		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
-		<class>org.apache.openmeetings.db.entity.user.Userlevel</class>
 		<class>org.apache.openmeetings.db.entity.user.User</class>
 		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
 		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Tue Jun 10 15:46:38 2014
@@ -271,7 +271,6 @@
 	<bean id="soapLoginDao" class="org.apache.openmeetings.db.dao.server.SOAPLoginDao" />
 	<bean id="userContactsDao" class="org.apache.openmeetings.db.dao.user.UserContactsDao" />
 	<bean id="userDao" class="org.apache.openmeetings.db.dao.user.UserDao" />
-	<bean id="userLevelDao" class="org.apache.openmeetings.db.dao.user.UserLevelDao" />
 	<bean id="serverDao" class="org.apache.openmeetings.db.dao.server.ServerDao" />
 	<bean id="chatDao" class="org.apache.openmeetings.db.dao.basic.ChatDao" />
 	<bean id="clientDao" class="org.apache.openmeetings.db.dao.room.ClientDao" />

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java Tue Jun 10 15:46:38 2014
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.we
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.After;
@@ -39,9 +40,9 @@ public class AbstractWicketTester extend
 
 	public void login(String login, String password) {
 		if (login != null && password != null) {
-			WebSession.get().signIn(login, password, "");
+			WebSession.get().signIn(login, password, Type.user, null);
 		} else {
-			WebSession.get().signIn(username, userpass, "");
+			WebSession.get().signIn(username, userpass, Type.user, null);
 		}
 		assertTrue("Web session is not signed in for user: " + (login != null ? login : username), WebSession.get().isSignedIn());
 	}

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java Tue Jun 10 15:46:38 2014
@@ -21,42 +21,36 @@ package org.apache.openmeetings.test.inv
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import org.apache.openmeetings.data.user.UserManager;
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.axis.services.UserWebService;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.remote.InvitationService;
 import org.apache.openmeetings.remote.MainService;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestInvitation extends AbstractJUnitDefaults {
-
-	private static final Logger log = LoggerFactory.getLogger(TestInvitation.class);
-	
 	@Autowired
 	private InvitationService invitationService;
 	@Autowired
 	private MainService mService;
 	@Autowired
-	private UserManager userManager;
+	private UserWebService userWebService;
+	@Autowired
+	private UserDao userDao;
 	
 	@Test
-	public void testSendInvitationLink() {
-		try {
-			Sessiondata sessionData = mService.getsessiondata();
-			
-			User us = (User) userManager.loginUser(sessionData.getSession_id(), username, userpass, null, null, false);
-			
-			String date = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
-			invitationService.sendInvitationHash(sessionData.getSession_id(), "Testname", "Testlastname", "message", "sebawagner@apache.org", 
-					"subject", 1L, "", false, "", 1, date, "12:00", date, "14:00", 1L, us.getTimeZoneId(), true);
-			
-		} catch (Exception err) {
-			log.error("[testSendInvitationLink]", err);
-		}
+	public void testSendInvitationLink() throws AxisFault {
+		Sessiondata sessionData = mService.getsessiondata();
+		
+		Long uid = userWebService.loginUser(sessionData.getSession_id(), username, userpass);
+		User us = userDao.get(uid);
+		
+		String date = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
+		invitationService.sendInvitationHash(sessionData.getSession_id(), "Testname", "Testlastname", "message", "sebawagner@apache.org", 
+				"subject", 1L, "", false, "", 1, date, "12:00", date, "14:00", 1L, us.getTimeZoneId(), true);
 	}
-
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java Tue Jun 10 15:46:38 2014
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.test.navi;
 
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 
@@ -38,7 +38,7 @@ public class TestNavi extends AbstractJU
 	@Test
 	public void testGetNavi(){
 		
-        List<Naviglobal> ll = navimanagement.getMainMenu(3L, 1L, 1L);
+        List<Naviglobal> ll = navimanagement.getMainMenu(true, 1L, 1L);
 
         assertTrue("GlobalNavi size should be greater than zero: " + ll.size(), ll.size() > 0);
         System.out.println("NaviGlobal size: " + ll.size());

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java Tue Jun 10 15:46:38 2014
@@ -21,6 +21,7 @@ package org.apache.openmeetings.test.use
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.List;
@@ -42,6 +43,11 @@ public class TestUserContact extends Abs
 	Random random = new Random();
 	
 	@Test
+	public void testGetUser() throws Exception {
+		assertNull("Null should be returned in case User does not exist", userDao.get(Long.MAX_VALUE));
+	}
+	
+	@Test
 	public void createUserWithOrganisation() throws Exception {
 		int rnd = random.nextInt();
 		User u = getUser(rnd);

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java Tue Jun 10 15:46:38 2014
@@ -20,27 +20,21 @@ package org.apache.openmeetings.test.use
 
 import static org.junit.Assert.assertNotNull;
 
-import org.apache.openmeetings.data.user.UserManager;
-import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.remote.MainService;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OmException;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestLogin extends AbstractJUnitDefaults {
 	
 	@Autowired
-	private MainService mService;
-	
-	@Autowired
-	private UserManager userManager;
+	private UserDao userDao;
 
 	@Test
-	public void testTestLogin(){
-		Sessiondata sessionData = mService.getsessiondata();
-		
-		User us = (User) userManager.loginUser(sessionData.getSession_id(), username, userpass, null, null, false);
+	public void testTestLogin() throws OmException {
+		User us = userDao.login(username, userpass);
 		
 		assertNotNull("User is unable to login", us);
 		

Modified: openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java (original)
+++ openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java Tue Jun 10 15:46:38 2014
@@ -18,21 +18,53 @@
  */
 package org.apache.openmeetings.util;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Set;
+
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
 public class AuthLevelUtil {
-	 
-	public static boolean checkUserLevel(Long user_level) {
-		return user_level == 1 || user_level == 2 || user_level == 3 || user_level == 4;
-	}
+	private static final Logger log = Red5LoggerFactory.getLogger(AuthLevelUtil.class, webAppRootKey);
 	
-	public static boolean checkModLevel(Long user_level) {
-		return user_level == 2 || user_level == 3;
+	private static boolean check(Set<Right> rights, Right level) {
+		boolean result = rights.contains(level);
+		log.debug(String.format("Level %s :: %s", level, result ? "[GRANTED]" : "[DENIED]"));
+		return result;
 	}
 	
-	public static boolean checkAdminLevel(Long user_level) {
-		return user_level == 3;
+	public static boolean hasUserLevel(Set<Right> rights) {
+		return check(rights, Right.Room);
 	}
-	
-	public static boolean checkWebServiceLevel(Long user_level) {
-		return user_level == 3 || user_level == 4;
+
+	public static boolean hasModLevel(User u, Long orgId) {
+		boolean result = hasAdminLevel(u.getRights());
+		if (!result && orgId != null) {
+			for (Organisation_Users ou : u.getOrganisation_users()) {
+				if (orgId.equals(ou.getOrganisation().getOrganisation_id())) {
+					if (Boolean.TRUE.equals(ou.getIsModerator())) {
+						result = true;
+					}
+					break;
+				}
+			}
+		}
+		return result;
+	}
+
+	public static boolean hasAdminLevel(Set<Right> rights) {
+		return check(rights, Right.Admin);
+	}
+
+	public static boolean hasWebServiceLevel(Set<Right> rights) {
+		return check(rights, Right.Soap);
+	}
+
+	public static boolean hasLoginLevel(Set<Right> rights) {
+		return check(rights, Right.Login);
 	}
 }

Added: openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmException.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmException.java?rev=1601669&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmException.java (added)
+++ openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmException.java Tue Jun 10 15:46:38 2014
@@ -0,0 +1,22 @@
+package org.apache.openmeetings.util;
+
+public class OmException extends Exception {
+	private static final long serialVersionUID = 1L;
+	private Long code;
+	
+	public OmException(String msg) {
+		super(msg);
+	}
+	
+	public OmException(Long code) {
+		this.code = code;
+	}
+
+	public Long getCode() {
+		return code;
+	}
+
+	public void setCode(Long code) {
+		this.code = code;
+	}
+}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java Tue Jun 10 15:46:38 2014
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.admi
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 
-@AuthorizeInstantiation("ADMIN")
+@AuthorizeInstantiation("Admin")
 public abstract class AdminPanel extends BasePanel {
 	private static final long serialVersionUID = 6811243474361803279L;
 

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html Tue Jun 10 15:46:38 2014
@@ -50,10 +50,7 @@
 					wicket:id="forceTimeZoneCheck" />
 			</div>
 			<div class="formelement">
-				<label><wicket:ommessage key="158" /></label><select wicket:id="status" />
-			</div>
-			<div class="formelement">
-				<label><wicket:ommessage key="169" /></label><select wicket:id="level_id" />
+				<label><wicket:ommessage key="881" /></label><input type="hidden" class="input" wicket:id="rights" />
 			</div>
 		</fieldset>
 		<fieldset class="ui-widget-content">

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java Tue Jun 10 15:46:38 2014
@@ -25,11 +25,14 @@ import static org.apache.openmeetings.we
 import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.web.admin.AdminBaseForm;
 import org.apache.openmeetings.web.app.WebSession;
@@ -42,7 +45,6 @@ import org.apache.wicket.markup.html.bas
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
@@ -51,6 +53,9 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.util.time.Duration;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.Select2MultiChoice;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
 
 /**
  * CRUD operations in form for {@link User}
@@ -145,54 +150,36 @@ public class UserForm extends AdminBaseF
 
 		add(new CheckBox("forceTimeZoneCheck"));
 
-		final String field159 = WebSession.getString(159);
-		final String field160 = WebSession.getString(160);
-
-		add(new DropDownChoice<Integer>("status", Arrays.asList(0, 1), new IChoiceRenderer<Integer>() {
-
+		add(new Select2MultiChoice<Right>("rights", null, new TextChoiceProvider<Right>() {
 			private static final long serialVersionUID = 1L;
 
-			public Object getDisplayValue(Integer id) {
-				if (id.equals(0)) {
-					return field159;
-				} else if (id.equals(1)) {
-					return field160;
-				}
-				return null;
+			@Override
+			protected String getDisplayText(Right choice) {
+				return choice.name();
 			}
 
-			public String getIdValue(Integer id, int index) {
-				return "" + id;
+			@Override
+			protected Object getId(Right choice) {
+				return choice.name();
 			}
 
-		}));
-
-		final String field166 = WebSession.getString(166);
-		final String field167 = WebSession.getString(167);
-		final String field168 = WebSession.getString(168);
-		final String field1311 = WebSession.getString(1311);
-
-		add(new DropDownChoice<Long>("level_id", Arrays.asList(1L, 2L, 3L, 4L), new IChoiceRenderer<Long>() {
-
-			private static final long serialVersionUID = 1L;
-
-			public Object getDisplayValue(Long id) {
-				if (id.equals(1L)) {
-					return field166;
-				} else if (id.equals(2L)) {
-					return field167;
-				} else if (id.equals(3L)) {
-					return field168;
-				} else if (id.equals(4L)) {
-					return field1311;
+			@Override
+			public void query(String term, int page, Response<Right> response) {
+				for (Right r : Right.values()) {
+					if (r.name().contains(term)) {
+						response.add(r);
+					}
 				}
-				return null;
 			}
 
-			public String getIdValue(Long id, int index) {
-				return "" + id;
+			@Override
+			public Collection<Right> toChoices(Collection<String> ids) {
+				Collection<Right> rights = new ArrayList<User.Right>(ids.size());
+				for (String id : ids) {
+					rights.add(Right.valueOf(id));
+				}
+				return rights;
 			}
-
 		}));
 		add(new ComunityUserForm("comunity", getModel()));
 	}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java Tue Jun 10 15:46:38 2014
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
@@ -30,68 +31,63 @@ public class OmAuthenticationStrategy ex
 	private static final String VALUE_SEPARATOR = "-sep-";
 	private static final String COOKIE_KEY = "LoggedIn";
 	private static final Logger log = Red5LoggerFactory.getLogger(OmAuthenticationStrategy.class, webAppRootKey);
-	/** The cookie name to store the username/password/domain */
+	/** The cookie name to store the username/password/type/domain */
 	private final String cookieKey;
-	
+
 	public OmAuthenticationStrategy() {
 		super(COOKIE_KEY);
 		cookieKey = COOKIE_KEY;
 	}
-	
+
 	/**
 	 * @see org.apache.wicket.authentication.IAuthenticationStrategy#load()
 	 */
 	@Override
-	public String[] load()
-	{
+	public String[] load() {
 		String value = getCookieUtils().load(cookieKey);
-		if (Strings.isEmpty(value) == false)
-		{
-			try
-			{
+		if (Strings.isEmpty(value) == false) {
+			try {
 				value = getCrypt().decryptUrlSafe(value);
-			}
-			catch (RuntimeException e)
-			{
-				log.info(
-					"Error decrypting login cookie: {}. The cookie will be deleted. Possible cause is that a session-relative encryption key was used to encrypt this cookie while this decryption attempt is happening in a different session, eg user coming back to the application after session expiration",
-					cookieKey);
+			} catch (RuntimeException e) {
+				log.info("Error decrypting login cookie: {}. The cookie will be deleted. Possible cause is that a "
+						+ "session-relative encryption key was used to encrypt this cookie while this decryption attempt "
+						+ "is happening in a different session, eg user coming back to the application after session expiration",
+						cookieKey);
 				getCookieUtils().remove(cookieKey);
 				value = null;
 			}
-			if (Strings.isEmpty(value) == false)
-			{
+			if (!Strings.isEmpty(value)) {
 				String username = null;
 				String password = null;
-				String domain = null;
+				String type = null;
+				String domainId = null;
 
 				String[] values = value.split(VALUE_SEPARATOR);
-				if ((values.length > 0) && (Strings.isEmpty(values[0]) == false))
-				{
+				if (values.length > 0 && !Strings.isEmpty(values[0])) {
 					username = values[0];
 				}
-				if ((values.length > 1) && (Strings.isEmpty(values[1]) == false))
-				{
+				if (values.length > 1 && !Strings.isEmpty(values[1])) {
 					password = values[1];
 				}
-				if ((values.length > 2) && (Strings.isEmpty(values[2]) == false))
-				{
-					domain = values[2];
+				if (values.length > 2 && !Strings.isEmpty(values[2])) {
+					type = values[2];
+				}
+				if (values.length > 3 && !Strings.isEmpty(values[3])) {
+					domainId = values[3];
 				}
 
-				return new String[] { username, password, domain };
+				return new String[] { username, password, type, domainId };
 			}
 		}
 
 		return null;
 	}
 
-	public void save(final String username, final String password, final String domain) {
-		String value = username + VALUE_SEPARATOR + password + VALUE_SEPARATOR + domain;
-
-		String encryptedValue = getCrypt().encryptUrlSafe(value);
-
-		getCookieUtils().save(cookieKey, encryptedValue);
-
+	public void save(final String username, final String password, final Type type, final Long domainId) {
+		if (type != Type.oauth) {
+			String value = username + VALUE_SEPARATOR + password + VALUE_SEPARATOR + type.name() + VALUE_SEPARATOR + domainId;
+			String encryptedValue = getCrypt().encryptUrlSafe(value);
+			getCookieUtils().save(cookieKey, encryptedValue);
+		}
 	}
 }

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java Tue Jun 10 15:46:38 2014
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.web.app;
 
 import static java.text.DateFormat.SHORT;
-import static org.apache.openmeetings.util.AuthLevelUtil.checkAdminLevel;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
@@ -31,6 +30,7 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -45,7 +45,6 @@ import org.apache.openmeetings.db.dao.la
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.ILdapLoginManagement;
-import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.StateDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.label.FieldLanguage;
@@ -54,7 +53,10 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.pages.SwfPage;
 import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
@@ -83,7 +85,7 @@ public class WebSession extends Abstract
 	public static int MILLIS_IN_MINUTE = 60000;
 	//private static final Map<String, Locale> LNG_TO_LOCALE_MAP = new HashMap<String, Locale> ();
 	private long userId = -1;
-	private long userLevel = -1; //TODO renew somehow on user edit !!!!
+	private Set<Right> rights = new HashSet<User.Right>(); //TODO renew somehow on user edit !!!!
 	private long languageId = -1; //TODO renew somehow on user edit !!!!
 	private String SID = null;
 	private OmUrlFragment area = null;
@@ -114,7 +116,7 @@ public class WebSession extends Abstract
 	public void invalidate() {
 		super.invalidate();
 		userId = -1;
-		userLevel = -1;
+		rights.clear();
 		SID = null;
 		sdf = null;
 		recordingId = null;
@@ -150,15 +152,9 @@ public class WebSession extends Abstract
 		} catch (Exception e) {
 			//no-op, will continue to sign-in page
 		}
-		Roles r = null;
-		if (externalType != null) {
-			invalidate();
-		}
-		if (isSignedIn()) {
-			r = new Roles(Roles.USER);
-			if (checkAdminLevel(userLevel)) {
-				r.add(Roles.ADMIN);
-			}
+		Roles r = new Roles();
+		for (Right right : rights) {
+			r.add(right.name());
 		}
 		return r;
 	}
@@ -169,9 +165,15 @@ public class WebSession extends Abstract
 			IAuthenticationStrategy strategy = getAuthenticationStrategy();
 			// get username and password from persistence store
 			String[] data = strategy.load();
-			if ((data != null) && (data.length > 2)) {
+			if (data != null && data.length > 3 && data[2] != null) {
+				Long domainId = null;
+				try {
+					domainId = Long.parseLong(data[3]);
+				} catch (Exception e) {
+					//no-op
+				}
 				// try to sign in the user
-				if (!signIn(data[0], data[1], data[2])) {
+				if (!signIn(data[0], data[1], Type.valueOf(data[2]), domainId)) {
 					// the loaded credentials are wrong. erase them.
 					strategy.remove();
 				}
@@ -199,6 +201,7 @@ public class WebSession extends Abstract
 						user.setLogin(remoteUser.getUsername()); //FIXME check if login UNIQUE
 						user.setExternalUserId(remoteUser.getExternalUserId());
 						user.setExternalUserType(remoteUser.getExternalUserType());
+						user.getRights().add(Right.Room);
 						user.getAdresses().setEmail(remoteUser.getEmail());
 						user.setPictureuri(remoteUser.getPictureUrl());
 					} else {
@@ -225,7 +228,7 @@ public class WebSession extends Abstract
 	
 	private void setUser(User u) {
 		userId = u.getUser_id();
-		userLevel = u.getLevel_id();
+		rights = Collections.unmodifiableSet(u.getRights());
 		languageId = u.getLanguage_id();
 		externalType = u.getExternalUserType();
 		tz = getBean(TimezoneUtil.class).getTimeZone(u);
@@ -237,25 +240,30 @@ public class WebSession extends Abstract
 		}
 	}
 	
-	public boolean signIn(String login, String password, String ldapConfigFileName) {
+	public boolean signIn(String login, String password, Type type, Long domainId) {
 		Sessiondata sessData = getBean(SessiondataDao.class).startsession();
 		SID = sessData.getSession_id();
-		Object _u = Strings.isEmpty(ldapConfigFileName)
-				? getBean(IUserManager.class).loginUser(SID, login, password, null, null, false)
-				: getBean(ILdapLoginManagement.class).doLdapLogin(login, password, null, null, SID, ldapConfigFileName);
-		
-		if (_u instanceof User) {
-			User u = (User)_u;
-			/* we will allow login in case user 'guess' the password
-			if (!checkAdminLevel(u.getLevel_id()) && Type.ldap == u.getType() && Strings.isEmpty(ldapConfigFileName)) {
-				//user is LDAP and is not admin, then authentication should be done on the LDAP server (even if the LDAP server is down)
-				return false;
+		try {
+			User u = null;
+			switch (type) {
+				case ldap:
+					u = getBean(ILdapLoginManagement.class).login(login, password, domainId);
+					break;
+				case user:
+					/* we will allow login against internal DB in case user 'guess' LDAP password */
+					u = getBean(UserDao.class).login(login, password);
+					break;
+				case oauth:
+					// we did all the checks at this stage, just set the user
+					u = getBean(UserDao.class).getByName(login, Type.oauth);
+					break;
+				default:
+					throw new OmException(-1L);
 			}
-			*/
 			setUser(u);
 			return true;
-		} else if (_u instanceof Long) {
-			loginError = (Long)_u;
+		} catch (OmException oe) {
+			loginError = oe.getCode() == null ? -1 : oe.getCode();
 		}
 		return false;
 	}
@@ -348,8 +356,8 @@ public class WebSession extends Abstract
 		return get().sdf;
 	}
 	
-	public static long getUserLevel() {
-		return get().userLevel;
+	public static Set<Right> getRights() {
+		return get().rights;
 	}
 
 	public OmUrlFragment getArea() {

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java Tue Jun 10 15:46:38 2014
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.comm
 import org.apache.openmeetings.db.dao.basic.NavigationDao;
 import org.apache.openmeetings.db.entity.basic.Naviglobal;
 import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
@@ -47,7 +48,7 @@ public class MenuPanel extends BasePanel
 		setMarkupId(id);
 		
 		final NavigationDao man = Application.getBean(NavigationDao.class);
-		add(new ListView<Naviglobal>("mainItem", man.getMainMenu(WebSession.getUserLevel(), WebSession.getUserId(), WebSession.getLanguage())) {
+		add(new ListView<Naviglobal>("mainItem", man.getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()), WebSession.getUserId(), WebSession.getLanguage())) {
 			private static final long serialVersionUID = 2173926553418745231L;
 
 			@Override

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/UserPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/UserPanel.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/UserPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/UserPanel.java Tue Jun 10 15:46:38 2014
@@ -30,7 +30,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 
-@AuthorizeInstantiation("USER")
+@AuthorizeInstantiation("Dashboard")
 public abstract class UserPanel extends BasePanel {
 	private static final long serialVersionUID = 8607846885689465360L;
 

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java Tue Jun 10 15:46:38 2014
@@ -22,6 +22,8 @@ import java.util.Date;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
@@ -34,9 +36,9 @@ public class ActivatePage extends BaseNo
 		if (userHash != null) {
 			User user = Application.getBean(UserDao.class).getUserByActivationHash(userHash);
 
-			if (user != null && user.getStatus() == 0) {
+			if (!AuthLevelUtil.hasLoginLevel(user.getRights())) {
 				// activate
-				user.setStatus(1);
+				user.getRights().add(Right.Login);
 				user.setUpdatetime(new Date());
 
 				Application.getBean(UserDao.class).update(user, null);

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java Tue Jun 10 15:46:38 2014
@@ -55,7 +55,7 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 import org.wicketstuff.urlfragment.UrlFragment;
 
-@AuthorizeInstantiation("USER")
+@AuthorizeInstantiation({"Admin", "Dashboard", "Room"})
 public class MainPage extends BaseInitedPage {
 	private static final long serialVersionUID = 6421960759218157999L;
 	private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java Tue Jun 10 15:46:38 2014
@@ -125,7 +125,7 @@ public class ForgetPasswordDialog extend
 					if (type == Type.email && null == dao.getUserByEmail(n)) {
 						error(WebSession.getString(318));
 					}
-					if (type == Type.login && null == dao.getUserByName(n, User.Type.user)) {
+					if (type == Type.login && null == dao.getByName(n, User.Type.user)) {
 						error(WebSession.getString(320));
 					}
 				}
@@ -216,7 +216,7 @@ public class ForgetPasswordDialog extend
 					return new Long(-9);
 				}
 			} else if (username.length() > 0) {
-				User us = userDao.getUserByName(username, User.Type.user);
+				User us = userDao.getByName(username, User.Type.user);
 				if (us != null) {
 					sendHashByUser(us, appLink, userDao);
 					return new Long(-4);