From 4ffed66fa609983889ea4a7a12038d5c83e79468 Mon Sep 17 00:00:00 2001 From: vcestone Date: Wed, 19 Aug 2020 12:05:44 +0200 Subject: [PATCH] Added Avatar change support --- src/themes/d4science/account/account.ftl | 95 ++++++++++ .../account/messages/messages_de.properties | 2 + .../account/messages/messages_en.properties | 3 + .../account/messages/messages_it.properties | 3 + .../admin/resources/js/user-avatar.js | 26 +++ .../admin/resources/partials/user-detail.html | 169 ++++++++++++++++++ src/themes/d4science/admin/theme.properties | 1 + 7 files changed, 299 insertions(+) create mode 100644 src/themes/d4science/account/account.ftl create mode 100644 src/themes/d4science/admin/resources/js/user-avatar.js create mode 100644 src/themes/d4science/admin/resources/partials/user-detail.html diff --git a/src/themes/d4science/account/account.ftl b/src/themes/d4science/account/account.ftl new file mode 100644 index 0000000..44aea54 --- /dev/null +++ b/src/themes/d4science/account/account.ftl @@ -0,0 +1,95 @@ +<#import "template.ftl" as layout> +<@layout.mainLayout active='account' bodyClass='user'; section> + +
+
+

${msg("editAccountHtmlTitle")}

+
+
+ * ${msg("requiredFields")} +
+
+ +
+ + + + <#if !realm.registrationEmailAsUsername> +
+
+ <#if realm.editUsernameAllowed>* +
+ +
+ disabled="disabled" value="${(account.username!'')}"/> +
+
+ + +
+
+ * +
+ +
+ +
+
+ +
+
+ * +
+ +
+ +
+
+ +
+
+ * +
+ +
+ +
+
+ +
+
+
+ <#if url.referrerURI??>${kcSanitize(msg("backToApplication")?no_esc)} + + +
+
+
+
+ +
+
+

${msg("changeAvatarHtmlTitle")}

+
+
+ + <#assign avatarUrl = url.accountUrl?replace("^(.*)(/account/?)(\\?(.*))?$", "$1/avatar-provider/?account&$4", 'r') /> +
+ + + + + + + +
+
+
+ +
+
+
+
+ + diff --git a/src/themes/d4science/account/messages/messages_de.properties b/src/themes/d4science/account/messages/messages_de.properties index c0639f2..05960bd 100644 --- a/src/themes/d4science/account/messages/messages_de.properties +++ b/src/themes/d4science/account/messages/messages_de.properties @@ -1 +1,3 @@ accountManagementTitle=D4Science Benutzerkontoverwaltung + +changeAvatarHtmlTitle=Profilbild bearbeiten diff --git a/src/themes/d4science/account/messages/messages_en.properties b/src/themes/d4science/account/messages/messages_en.properties index bd37d6b..7a4455a 100644 --- a/src/themes/d4science/account/messages/messages_en.properties +++ b/src/themes/d4science/account/messages/messages_en.properties @@ -4,3 +4,6 @@ accountManagementWelcomeMessage=Welcome to D4Science Account Management authenticatorFinishSetUpMessage=Each time you sign in to your D4Science account, you will be asked to provide a two-factor authentication code. authenticatorSMSMessage=D4Science will send the Verification code to your phone as the two-factor authentication. + +changeAvatarHtmlTitle=Edit Avatar +noAvatarSet=No image set \ No newline at end of file diff --git a/src/themes/d4science/account/messages/messages_it.properties b/src/themes/d4science/account/messages/messages_it.properties index 56df2ff..fc70c84 100644 --- a/src/themes/d4science/account/messages/messages_it.properties +++ b/src/themes/d4science/account/messages/messages_it.properties @@ -1 +1,4 @@ accountManagementTitle=D4Science Account Management + +changeAvatarHtmlTitle=Modifica Avatar +noAvatarSet=Nessuna immagine impostata \ No newline at end of file diff --git a/src/themes/d4science/admin/resources/js/user-avatar.js b/src/themes/d4science/admin/resources/js/user-avatar.js new file mode 100644 index 0000000..ff9ce26 --- /dev/null +++ b/src/themes/d4science/admin/resources/js/user-avatar.js @@ -0,0 +1,26 @@ +module.service('UserAvatar', function(Auth) { + this.url = function(user, realm) { + return authUrl + '/realms/' + realm.realm + '/avatar-provider/admin/' + user.id + "?access_token=" + Auth.authz.token + "&" + + new Date().getTime(); + } +}); + +module.controller('UserAvatarCtrl', function($scope, $http, Notifications, UserAvatar) { + $scope.avatarUrl = UserAvatar.url($scope.user, $scope.realm); + + $scope.uploadAvatar = function(files) { + var fd = new FormData(); + //Take the first selected file + fd.append("image", files[0]); + + $http.post($scope.avatarUrl, fd, { + headers: {'Content-Type': undefined }, + transformRequest: angular.identity + }).then(function() { + Notifications.success("Your changes have been saved to the user."); + $scope.avatarUrl = UserAvatar.url($scope.user, $scope.realm); + }, function(error) { + console.error(error); + Notifications.error("Could not save the avatar"); + }); + } +}); diff --git a/src/themes/d4science/admin/resources/partials/user-detail.html b/src/themes/d4science/admin/resources/partials/user-detail.html new file mode 100644 index 0000000..e24f233 --- /dev/null +++ b/src/themes/d4science/admin/resources/partials/user-detail.html @@ -0,0 +1,169 @@ +
+ + + + +
+ +
+
+ +
+ +
+
+ +
+ +
+ {{user.createdTimestamp|date:'shortDate'}} {{user.createdTimestamp|date:'mediumTime'}} +
+
+ +
+ +
+ + +
+
+ + +
+ + +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+
+ +
+ +
+ +
+ {{:: 'user-enabled.tooltip' | translate}} +
+
+ +
+ +
+ {{:: 'user-temporarily-locked.tooltip' | translate}} +
+ +
+
+
+ + + {{:: 'user-link.tooltip' | translate}} +
+
+ + + {{:: 'user-origin.tooltip' | translate}} +
+
+ +
+ +
+ {{:: 'email-verified.tooltip' | translate}} +
+
+ + +
+ +
+ {{:: 'required-user-actions.tooltip' | translate}} +
+ +
+ +
+
+ +
+
+
+ +
+ + +
+ +
+ {{:: 'impersonate-user.tooltip' | translate}} +
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+
+ Avatar +
+
+ +
+
+
+ + +
+ +
+
+
+
+ +
+ + diff --git a/src/themes/d4science/admin/theme.properties b/src/themes/d4science/admin/theme.properties index ee3f1d1..a292171 100644 --- a/src/themes/d4science/admin/theme.properties +++ b/src/themes/d4science/admin/theme.properties @@ -1 +1,2 @@ parent=keycloak +scripts=js/user-avatar.js \ No newline at end of file