Package com.logicaldoc.web.service
Class SecurityServiceImpl
java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
com.google.gwt.user.server.rpc.jakarta.AbstractRemoteServiceServlet
com.google.gwt.user.server.rpc.jakarta.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,jakarta.servlet.Servlet,jakarta.servlet.ServletConfig,Serializable
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 -
Field Summary
Fields inherited from class jakarta.servlet.http.HttpServlet
LEGACY_DO_HEAD -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddUserToGroup(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 uservoidchangeStatus(long userId, boolean enabled) Changes the status of a uservoidcloneWorkTimes(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 uservoiddeleteApiKey(long keyId) Deletes an API KeyvoiddeleteGroup(long groupId) Deletes a given groupvoiddeleteMenu(long menuId) Deletes a menu but only if is not a legacy menu (type not 0)voiddeleteTrustedDevices(List<Long> ids) Deletes a set of trusted devices for the current uservoiddeleteUser(long userId) Deletes a given userstatic GUITenantfromTenant(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 GUITenantgetTenant(long tenantId) static GUITenantgetUser(long userId) Loads a given user from the databaseisTrustedDevice(String deviceId) Check if the saved device ID is trusted for the current uservoidKill 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 settingsvoidlogout()Logs out the current uservoidremoveBlockedEntities(List<Long> ids) Removes blocked entries detected as Brute Force AttackvoidremoveFromGroup(long groupId, List<Long> userIds) Removes users from a groupvoidreplicateUsersSettings(long masterUserId, List<Long> userIds, boolean gui, boolean groups) Replicates the settings of a given user to a selection of other usersvoidresetAvatar(long userId) Resets the avatar to the default onevoidApplies all security settings to menuvoidsaveAvatar(long userId) Saves an uploaded image as the user's avatarCreates or updates a groupsaveInterfaceSettings(GUIUser user) Saves the interface settings onlySaves a menuvoidSaves a set of menussaveProfile(GUIUser guiUser) Saves the profile data onlybooleansaveSettings(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 uservoidupdateApiKey(long keyId, String newName) Updates an API KeyvoidupdateDeviceLabel(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
setThreadRequestMethods inherited from class com.google.gwt.user.server.rpc.jakarta.RemoteServiceServlet
getSerializationPolicy, init, processCall, processCall, processPostMethods inherited from class com.google.gwt.user.server.rpc.jakarta.AbstractRemoteServiceServlet
doPostMethods inherited from class jakarta.servlet.http.HttpServlet
serviceMethods inherited from class jakarta.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:SecurityServiceLogs-in a user by an existing session ID (session reuse)- Specified by:
getSessionin 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:SecurityServiceLogs out the current user- Specified by:
logoutin interfaceSecurityService
-
changePassword
public GUIValue changePassword(Long requestorUserId, long userId, String oldPassword, String newPassword, boolean notify) Description copied from interface:SecurityServiceChanges the password of a user- Specified by:
changePasswordin 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:SecurityServiceAdds a user to a group- Specified by:
addUserToGroupin interfaceSecurityService- Parameters:
groupId- identifier of the groupuserId- identifier of the user- Throws:
ServerException- error generated in the server application
-
deleteGroup
Description copied from interface:SecurityServiceDeletes a given group- Specified by:
deleteGroupin interfaceSecurityService- Parameters:
groupId- identifier of the group- Throws:
ServerException- error generated in the server application
-
deleteUser
Description copied from interface:SecurityServiceDeletes a given user- Specified by:
deleteUserin interfaceSecurityService- Parameters:
userId- identifier of the user- Throws:
ServerException- error generated in the server application
-
getGroup
Description copied from interface:SecurityServiceLoads a given group from the database- Specified by:
getGroupin 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:SecurityServiceLoads a given user from the database- Specified by:
getUserin 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:SecurityServiceRemoves users from a group- Specified by:
removeFromGroupin interfaceSecurityService- Parameters:
groupId- identifier of the groupuserIds- user identifiers- Throws:
ServerException- error generated in the server application
-
saveGroup
Description copied from interface:SecurityServiceCreates or updates a group- Specified by:
saveGroupin interfaceSecurityService- Parameters:
group- the group to save- Returns:
- the updated group
- Throws:
ServerException- error generated in the server application
-
saveUser
Description copied from interface:SecurityServiceCreates or updates a user- Specified by:
saveUserin 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:SecurityServiceSaves the profile data only- Specified by:
saveProfilein interfaceSecurityService- Parameters:
guiUser- the user to save- Returns:
- the updated user
- Throws:
ServerException- error generated in the server application
-
saveInterfaceSettings
Description copied from interface:SecurityServiceSaves the interface settings only- Specified by:
saveInterfaceSettingsin interfaceSecurityService- Parameters:
user- the user to save- Returns:
- the updated user
- Throws:
ServerException- error generated in the server application
-
kill
Description copied from interface:SecurityServiceKill the session with the given sid- Specified by:
killin interfaceSecurityService- Parameters:
sid- identifier of the session
-
loadSettings
Description copied from interface:SecurityServiceLoads security settings- Specified by:
loadSettingsin interfaceSecurityService- Returns:
- the security settings
- Throws:
ServerException- error generated in the server application
-
saveSettings
Description copied from interface:SecurityServiceSaves security settings- Specified by:
saveSettingsin 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:SecurityServiceApplies all security settings to menu- Specified by:
saveACLin interfaceSecurityService- Parameters:
menu- the menu- Throws:
ServerException- error generated in the server application
-
deleteMenu
Description copied from interface:SecurityServiceDeletes a menu but only if is not a legacy menu (type not 0)- Specified by:
deleteMenuin interfaceSecurityService- Parameters:
menuId- the menu to delete- Throws:
ServerException- error generated in the server application
-
saveMenus
Description copied from interface:SecurityServiceSaves a set of menus- Specified by:
saveMenusin interfaceSecurityService- Parameters:
menus- the menus to savelocale- currently selected locale- Throws:
ServerException- error generated in the server application
-
saveMenu
Description copied from interface:SecurityServiceSaves a menu- Specified by:
saveMenuin 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:SecurityServiceRetrieves the accessible menus children of a given parent- Specified by:
getMenusin 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:SecurityServiceRetrieves the specified menu- Specified by:
getMenuin 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:SecurityServiceSearches for users- Specified by:
searchUsersin 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:SecurityServiceRetrieves the list of actually blocked usernames and IPs detected as Brute Force Attack- Specified by:
loadBlockedEntitiesin interfaceSecurityService- Returns:
- the array of blocked usernames and IPs
- Throws:
ServerException- error generated in the server application
-
removeBlockedEntities
Description copied from interface:SecurityServiceRemoves blocked entries detected as Brute Force Attack- Specified by:
removeBlockedEntitiesin 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:SecurityServiceReplicates the settings of a given user to a selection of other users- Specified by:
replicateUsersSettingsin 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:SecurityServiceUpdates the label of a device- Specified by:
updateDeviceLabelin 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:SecurityServicePermanently trusts the current device for the current user- Specified by:
trustDevicein 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:SecurityServiceCheck if the saved device ID is trusted for the current user- Specified by:
isTrustedDevicein 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:SecurityServiceDeletes a set of trusted devices for the current user- Specified by:
deleteTrustedDevicesin interfaceSecurityService- Parameters:
ids- identifiers of the devices to delete- Throws:
ServerException- error generated in the server application
-
syncGeolocationDB
Description copied from interface:SecurityServiceDownloads the most recent version of the Geolocation database- Specified by:
syncGeolocationDBin interfaceSecurityService- Parameters:
key- the API key- Returns:
- the current database version
- Throws:
ServerException- error generated in the server application
-
saveAvatar
Description copied from interface:SecurityServiceSaves an uploaded image as the user's avatar- Specified by:
saveAvatarin interfaceSecurityService- Parameters:
userId- Identifier of the user- Throws:
ServerException- error generated in the server application
-
resetAvatar
Description copied from interface:SecurityServiceResets the avatar to the default one- Specified by:
resetAvatarin 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:SecurityServiceClones a work time to a set of other users- Specified by:
cloneWorkTimesin 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:SecurityServiceChanges the status of a user- Specified by:
changeStatusin 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:SecurityServiceGenerates a password using the configured policies.- Specified by:
generatePasswordin 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:SecurityServiceGenerates a password- Specified by:
generatePassword2in 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:SecurityServiceValidates a password- Specified by:
validatePasswordin 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:SecurityServiceCreates a new API Key for the current user- Specified by:
createApiKeyin 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:SecurityServiceDeletes an API Key- Specified by:
deleteApiKeyin interfaceSecurityService- Parameters:
keyId- Identifier of the API Key- Throws:
ServerException- error generated in the server application
-
updateApiKey
Description copied from interface:SecurityServiceUpdates an API Key- Specified by:
updateApiKeyin interfaceSecurityService- Parameters:
keyId- Identifier of the API KeynewName- The new name to assign- Throws:
ServerException- error generated in the server application
-