Package com.logicaldoc.web.service
Class SecurityServiceImpl
java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet
com.google.gwt.user.server.rpc.RemoteServiceServlet
com.logicaldoc.web.service.AbstractRemoteService
com.logicaldoc.web.service.SecurityServiceImpl
- All Implemented Interfaces:
com.google.gwt.user.client.rpc.RemoteService
,com.google.gwt.user.server.rpc.SerializationPolicyProvider
,SecurityService
,Serializable
,javax.servlet.Servlet
,javax.servlet.ServletConfig
Implementation of the SecurityService
- Since:
- 6.0
- Author:
- Marco Meschieri - LogicalDOC
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.logicaldoc.gui.common.client.services.SecurityService
SecurityService.Instance
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addUserToGroup
(long groupId, long userId) Adds a user to a groupchangePassword
(Long requestorUserId, long userId, String oldPassword, String newPassword, boolean notify) Changes the password of a uservoid
changeStatus
(long userId, boolean enabled) Changes the status of a uservoid
cloneWorkTimes
(long srcUserId, List<Long> userIds, List<Long> groupIds) Clones a work time to a set of other userscreateApiKey
(String name) Creates a new API Key for the current uservoid
deleteApiKey
(long keyId) Deletes an API Keyvoid
deleteGroup
(long groupId) Deletes a given groupvoid
deleteMenu
(long menuId) Deletes a menu but only if is not a legacy menu (type not 0)void
deleteTrustedDevices
(List<Long> ids) Deletes a set of trusted devices for the current uservoid
deleteUser
(long userId) Deletes a given userstatic GUITenant
fromTenant
(Tenant tenant) Generates a password using the configured policies.generatePassword2
(int length, int uppercaseChars, int lowercaseChars, int digits, int specialChars, int maxSequenceSize, int maxOccurrences) Generates a passwordgetGroup
(long groupId) Loads a given group from the databaseRetrieves the specified menuRetrieves the accessible menus children of a given parentgetSession
(String locale, String sid) Logs-in a user by an existing session ID (session reuse)static GUITenant
getTenant
(long tenantId) static GUITenant
getUser
(long userId) Loads a given user from the databaseisTrustedDevice
(String deviceId) Check if the saved device ID is trusted for the current uservoid
Kill the session with the given sidRetrieves the list of actually blocked usernames and IPs detected as Brute Force AttackloadSession
(Session session, String locale) Used internally by login procedures, instantiates a new GUISession by a given authenticated userLoads security settingsvoid
logout()
Logs out the current uservoid
removeBlockedEntities
(List<Long> ids) Removes blocked entries detected as Brute Force Attackvoid
removeFromGroup
(long groupId, List<Long> userIds) Removes users from a groupvoid
replicateUsersSettings
(long masterUserId, List<Long> userIds, boolean gui, boolean groups) Replicates the settings of a given user to a selection of other usersvoid
resetAvatar
(long userId) Resets the avatar to the default onevoid
Applies all security settings to menuvoid
saveAvatar
(long userId) Saves an uploaded image as the user's avatarCreates or updates a groupsaveInterfaceSettings
(GUIUser user) Saves the interface settings onlySaves a menuvoid
Saves a set of menussaveProfile
(GUIUser guiUser) Saves the profile data onlyboolean
saveSettings
(GUISecuritySettings settings) Saves security settingsCreates or updates a usersearchUsers
(String username, String groupId) Searches for userssyncGeolocationDB
(String key) Downloads the most recent version of the Geolocation databasetrustDevice
(String label) Permanently trusts the current device for the current uservoid
updateApiKey
(long keyId, String newName) Updates an API Keyvoid
updateDeviceLabel
(long deviceId, String label) Updates the label of a devicevalidatePassword
(String password, int minLength, int uppercaseChars, int lowercaseChars, int digits, int specialChars, int maxSequenceSize, int maxOccurrences) Validates a passwordMethods inherited from class com.logicaldoc.web.service.AbstractRemoteService
setThreadRequest
Methods inherited from class com.google.gwt.user.server.rpc.RemoteServiceServlet
getSerializationPolicy, init, processCall, processCall, processPost
Methods inherited from class com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet
doPost
Methods inherited from class javax.servlet.http.HttpServlet
service
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Constructor Details
-
SecurityServiceImpl
public SecurityServiceImpl()
-
-
Method Details
-
getTenant
-
fromTenant
-
getTenant
- Throws:
PersistenceException
-
loadSession
Used internally by login procedures, instantiates a new GUISession by a given authenticated user- Parameters:
session
- the current sessionlocale
- the current locale- Returns:
- session details
- Throws:
ServerException
- a generic error
-
getSession
Description copied from interface:SecurityService
Logs-in a user by an existing session ID (session reuse)- Specified by:
getSession
in interfaceSecurityService
- Parameters:
locale
- the currently used language specificationsid
- the session ID (optional), if not provided it is taken by cookies- Returns:
- session informations
-
logout
public void logout()Description copied from interface:SecurityService
Logs out the current user- Specified by:
logout
in interfaceSecurityService
-
changePassword
public GUIValue changePassword(Long requestorUserId, long userId, String oldPassword, String newPassword, boolean notify) Description copied from interface:SecurityService
Changes the password of a user- Specified by:
changePassword
in interfaceSecurityService
- Parameters:
requestorUserId
- The user Identifier of the requestoruserId
- The user IdentifieroldPassword
- can be nullnewPassword
- the new passwordnotify
- If the new credentials have to be notified- Returns:
- the error code and message. 0 if all went ok, 1 if the password is incorrect, 2 if the new password cannot be notified, 3 if the password has been already used, otherwise a positive number grater than 3
-
addUserToGroup
Description copied from interface:SecurityService
Adds a user to a group- Specified by:
addUserToGroup
in interfaceSecurityService
- Parameters:
groupId
- identifier of the groupuserId
- identifier of the user- Throws:
ServerException
- error generated in the server application
-
deleteGroup
Description copied from interface:SecurityService
Deletes a given group- Specified by:
deleteGroup
in interfaceSecurityService
- Parameters:
groupId
- identifier of the group- Throws:
ServerException
- error generated in the server application
-
deleteUser
Description copied from interface:SecurityService
Deletes a given user- Specified by:
deleteUser
in interfaceSecurityService
- Parameters:
userId
- identifier of the user- Throws:
ServerException
- error generated in the server application
-
getGroup
Description copied from interface:SecurityService
Loads a given group from the database- Specified by:
getGroup
in interfaceSecurityService
- Parameters:
groupId
- identifier of the group- Returns:
- group retrieved from the server application
- Throws:
ServerException
- error generated in the server application
-
getUser
Description copied from interface:SecurityService
Loads a given user from the database- Specified by:
getUser
in interfaceSecurityService
- Parameters:
userId
- identifier of the user- Returns:
- the user retrieved from the server application
- Throws:
ServerException
- error generated in the server application
-
removeFromGroup
Description copied from interface:SecurityService
Removes users from a group- Specified by:
removeFromGroup
in interfaceSecurityService
- Parameters:
groupId
- identifier of the groupuserIds
- user identifiers- Throws:
ServerException
- error generated in the server application
-
saveGroup
Description copied from interface:SecurityService
Creates or updates a group- Specified by:
saveGroup
in interfaceSecurityService
- Parameters:
group
- the group to save- Returns:
- the updated group
- Throws:
ServerException
- error generated in the server application
-
saveUser
Description copied from interface:SecurityService
Creates or updates a user- Specified by:
saveUser
in interfaceSecurityService
- Parameters:
guiUser
- the user to saveinfo
- informations about the User Interface- Returns:
- the saved user
- Throws:
ServerException
- error generated in the server application
-
saveProfile
Description copied from interface:SecurityService
Saves the profile data only- Specified by:
saveProfile
in interfaceSecurityService
- Parameters:
guiUser
- the user to save- Returns:
- the updated user
- Throws:
ServerException
- error generated in the server application
-
saveInterfaceSettings
Description copied from interface:SecurityService
Saves the interface settings only- Specified by:
saveInterfaceSettings
in interfaceSecurityService
- Parameters:
user
- the user to save- Returns:
- the updated user
- Throws:
ServerException
- error generated in the server application
-
kill
Description copied from interface:SecurityService
Kill the session with the given sid- Specified by:
kill
in interfaceSecurityService
- Parameters:
sid
- identifier of the session
-
loadSettings
Description copied from interface:SecurityService
Loads security settings- Specified by:
loadSettings
in interfaceSecurityService
- Returns:
- the security settings
- Throws:
ServerException
- error generated in the server application
-
saveSettings
Description copied from interface:SecurityService
Saves security settings- Specified by:
saveSettings
in interfaceSecurityService
- Parameters:
settings
- settings about security- Returns:
- True if the application has to be restarted
- Throws:
ServerException
- error generated in the server application
-
saveACL
Description copied from interface:SecurityService
Applies all security settings to menu- Specified by:
saveACL
in interfaceSecurityService
- Parameters:
menu
- the menu- Throws:
ServerException
- error generated in the server application
-
deleteMenu
Description copied from interface:SecurityService
Deletes a menu but only if is not a legacy menu (type not 0)- Specified by:
deleteMenu
in interfaceSecurityService
- Parameters:
menuId
- the menu to delete- Throws:
ServerException
- error generated in the server application
-
saveMenus
Description copied from interface:SecurityService
Saves a set of menus- Specified by:
saveMenus
in interfaceSecurityService
- Parameters:
menus
- the menus to savelocale
- currently selected locale- Throws:
ServerException
- error generated in the server application
-
saveMenu
Description copied from interface:SecurityService
Saves a menu- Specified by:
saveMenu
in interfaceSecurityService
- Parameters:
guiMenu
- the menu to savelocale
- currently selected locale- Returns:
- the saved menu
- Throws:
ServerException
- error generated in the server application
-
getMenus
public List<GUIMenu> getMenus(long parentId, String locale, boolean enabledOnly) throws ServerException Description copied from interface:SecurityService
Retrieves the accessible menus children of a given parent- Specified by:
getMenus
in interfaceSecurityService
- Parameters:
parentId
- identifier of the parent menulocale
- currently selected localeenabledOnly
- to retrieve just the enabled menus- Returns:
- the accessible children
- Throws:
ServerException
- error generated in the server application
-
getMenu
Description copied from interface:SecurityService
Retrieves the specified menu- Specified by:
getMenu
in interfaceSecurityService
- Parameters:
menuId
- identifier of the menulocale
- currently selected locale- Returns:
- the menu retrieved from the server application
- Throws:
ServerException
- error generated in the server application
-
searchUsers
Description copied from interface:SecurityService
Searches for users- Specified by:
searchUsers
in interfaceSecurityService
- Parameters:
username
- The username used in the like operator (optional)groupId
- The group ID (optional)- Returns:
- Array of found users
- Throws:
ServerException
- error generated in the server application
-
loadBlockedEntities
Description copied from interface:SecurityService
Retrieves the list of actually blocked usernames and IPs detected as Brute Force Attack- Specified by:
loadBlockedEntities
in interfaceSecurityService
- Returns:
- the array of blocked usernames and IPs
- Throws:
ServerException
- error generated in the server application
-
removeBlockedEntities
Description copied from interface:SecurityService
Removes blocked entries detected as Brute Force Attack- Specified by:
removeBlockedEntities
in interfaceSecurityService
- Parameters:
ids
- identifiers of entities from the BFA list- Throws:
ServerException
- error generated in the server application
-
replicateUsersSettings
public void replicateUsersSettings(long masterUserId, List<Long> userIds, boolean gui, boolean groups) throws ServerException Description copied from interface:SecurityService
Replicates the settings of a given user to a selection of other users- Specified by:
replicateUsersSettings
in interfaceSecurityService
- Parameters:
masterUserId
- identifier of the user with the settings you want to replicateuserIds
- identifiers of the users to replicate the settings togui
- if the user interface settings must be replicatedgroups
- if the groups must be replicated(the read-only users will not be affected by this flag)- Throws:
ServerException
- error generated in the server application
-
updateDeviceLabel
Description copied from interface:SecurityService
Updates the label of a device- Specified by:
updateDeviceLabel
in interfaceSecurityService
- Parameters:
deviceId
- identifier of the device to updatelabel
- label to assign to the current device- Throws:
ServerException
- error generated in the server application
-
trustDevice
Description copied from interface:SecurityService
Permanently trusts the current device for the current user- Specified by:
trustDevice
in interfaceSecurityService
- Parameters:
label
- optional label to assign to the current device- Returns:
- the ID of the trusted device
- Throws:
ServerException
- error generated in the server application
-
isTrustedDevice
Description copied from interface:SecurityService
Check if the saved device ID is trusted for the current user- Specified by:
isTrustedDevice
in interfaceSecurityService
- Parameters:
deviceId
- identifier of the device- Returns:
- if the device is trusted or not
- Throws:
ServerException
- error generated in the server application
-
deleteTrustedDevices
Description copied from interface:SecurityService
Deletes a set of trusted devices for the current user- Specified by:
deleteTrustedDevices
in interfaceSecurityService
- Parameters:
ids
- identifiers of the devices to delete- Throws:
ServerException
- error generated in the server application
-
syncGeolocationDB
Description copied from interface:SecurityService
Downloads the most recent version of the Geolocation database- Specified by:
syncGeolocationDB
in interfaceSecurityService
- Parameters:
key
- the API key- Returns:
- the current database version
- Throws:
ServerException
- error generated in the server application
-
saveAvatar
Description copied from interface:SecurityService
Saves an uploaded image as the user's avatar- Specified by:
saveAvatar
in interfaceSecurityService
- Parameters:
userId
- Identifier of the user- Throws:
ServerException
- error generated in the server application
-
resetAvatar
Description copied from interface:SecurityService
Resets the avatar to the default one- Specified by:
resetAvatar
in interfaceSecurityService
- Parameters:
userId
- Identifier of the user- Throws:
ServerException
- error generated in the server application
-
cloneWorkTimes
public void cloneWorkTimes(long srcUserId, List<Long> userIds, List<Long> groupIds) throws ServerException Description copied from interface:SecurityService
Clones a work time to a set of other users- Specified by:
cloneWorkTimes
in interfaceSecurityService
- Parameters:
srcUserId
- identifier of the user with the work time you want to cloneuserIds
- direct ids of users to clone the working time togroupIds
- the groups of users to clone the working time to- Throws:
ServerException
- generic error
-
changeStatus
Description copied from interface:SecurityService
Changes the status of a user- Specified by:
changeStatus
in interfaceSecurityService
- Parameters:
userId
- The user Identifierenabled
- If the user must be enabled or not- Throws:
ServerException
- error generated in the server application
-
generatePassword
Description copied from interface:SecurityService
Generates a password using the configured policies.- Specified by:
generatePassword
in interfaceSecurityService
- Returns:
- the generated password
- Throws:
InvalidSessionServerException
-
generatePassword2
public String generatePassword2(int length, int uppercaseChars, int lowercaseChars, int digits, int specialChars, int maxSequenceSize, int maxOccurrences) Description copied from interface:SecurityService
Generates a password- Specified by:
generatePassword2
in interfaceSecurityService
- Parameters:
length
- dimension of the passworduppercaseChars
- minimum number of upper case charslowercaseChars
- minimum number of lower case charsdigits
- minimum number of digitsspecialChars
- minimum number of special charsmaxSequenceSize
- maximum size of a sequencemaxOccurrences
- maximum number of occurrences of the same char- Returns:
- the generated password
-
validatePassword
public List<String> validatePassword(String password, int minLength, int uppercaseChars, int lowercaseChars, int digits, int specialChars, int maxSequenceSize, int maxOccurrences) Description copied from interface:SecurityService
Validates a password- Specified by:
validatePassword
in interfaceSecurityService
- Parameters:
password
- the password to validateminLength
- dimension of the passworduppercaseChars
- minimum number of upper case charslowercaseChars
- minimum number of lower case charsdigits
- minimum number of digitsspecialChars
- minimum number of special charsmaxSequenceSize
- maximum size of a sequencemaxOccurrences
- maximum number of occurrences of the same char- Returns:
- the reasons for the failure or empty
-
createApiKey
Description copied from interface:SecurityService
Creates a new API Key for the current user- Specified by:
createApiKey
in interfaceSecurityService
- Parameters:
name
- The name to give to the new key- Returns:
- The newly generated key
- Throws:
ServerException
- error generated in the server application
-
deleteApiKey
Description copied from interface:SecurityService
Deletes an API Key- Specified by:
deleteApiKey
in interfaceSecurityService
- Parameters:
keyId
- Identifier of the API Key- Throws:
ServerException
- error generated in the server application
-
updateApiKey
Description copied from interface:SecurityService
Updates an API Key- Specified by:
updateApiKey
in interfaceSecurityService
- Parameters:
keyId
- Identifier of the API KeynewName
- The new name to assign- Throws:
ServerException
- error generated in the server application
-