diff --git a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/file/FileAvatarStorageProvider.java b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/file/FileAvatarStorageProvider.java index 9252787..eeab63e 100644 --- a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/file/FileAvatarStorageProvider.java +++ b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/file/FileAvatarStorageProvider.java @@ -39,6 +39,9 @@ public class FileAvatarStorageProvider implements AvatarStorageProvider { public void saveAvatarImage(RealmModel realm, UserModel user, InputStream input) { checkRealmFolderExistence(realm.getName()); File avatarFile = getAvatarFile(realm, user); + logger.debugf("Saving new avatar file for user %s, file path is: %s", user.getUsername(), + avatarFile.getAbsolutePath()); + if (!avatarFile.exists()) { try { avatarFile.createNewFile(); @@ -65,6 +68,12 @@ public class FileAvatarStorageProvider implements AvatarStorageProvider { public InputStream loadAvatarImage(RealmModel realm, UserModel user) { checkRealmFolderExistence(realm.getName()); File avatarFile = getAvatarFile(realm, user); + if (avatarFile.exists()) { + logger.debugf("Loading avatar file for user %s, file path is: %s", user.getUsername(), + avatarFile.getAbsolutePath()); + } else { + logger.debugf("Avatar file not found for user %s", user.getUsername()); + } try { return new FileInputStream(avatarFile); } catch (FileNotFoundException e) { @@ -78,6 +87,20 @@ public class FileAvatarStorageProvider implements AvatarStorageProvider { useEmailAsFilename ? user.getEmail() : user.getUsername()); } + @Override + public void deleteAvatarImage(RealmModel realm, UserModel user) { + checkRealmFolderExistence(realm.getName()); + File avatarFile = getAvatarFile(realm, user); + if (avatarFile.exists()) { + logger.debugf("Deleting avatar file for user %s, file path is: %s", user.getUsername(), + avatarFile.getAbsolutePath()); + + avatarFile.delete(); + } else { + logger.debugf("Avatar file to delete not found for user %s", user.getUsername()); + } + } + @Override public void close() { // NOOP diff --git a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/userattribute/UserAttributeAvatarStorageProvider.java b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/userattribute/UserAttributeAvatarStorageProvider.java index c795abc..b44f961 100644 --- a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/userattribute/UserAttributeAvatarStorageProvider.java +++ b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/storage/userattribute/UserAttributeAvatarStorageProvider.java @@ -52,6 +52,12 @@ public class UserAttributeAvatarStorageProvider implements AvatarStorageProvider byte[] decoded = base64EncodedImage != null ? Base64.getDecoder().decode(base64EncodedImage) : new byte[0]; return new ByteArrayInputStream(decoded); } + + @Override + public void deleteAvatarImage(RealmModel realm, UserModel user) { + logger.debugf("Removing avatar image user's attribute: %s", userAttribute); + user.removeAttribute(userAttribute); + } @Override public void close() { diff --git a/avatar-storage/src/main/java/org/gcube/keycloak/avatar/storage/AvatarStorageProvider.java b/avatar-storage/src/main/java/org/gcube/keycloak/avatar/storage/AvatarStorageProvider.java index af4eba8..c2fd11d 100644 --- a/avatar-storage/src/main/java/org/gcube/keycloak/avatar/storage/AvatarStorageProvider.java +++ b/avatar-storage/src/main/java/org/gcube/keycloak/avatar/storage/AvatarStorageProvider.java @@ -12,4 +12,6 @@ public interface AvatarStorageProvider extends Provider { InputStream loadAvatarImage(RealmModel realm, UserModel user); + void deleteAvatarImage(RealmModel realm, UserModel user); + }