summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Quandalle <maxime@quandalle.com>2015-12-30 19:16:49 +0100
committerMaxime Quandalle <maxime@quandalle.com>2015-12-30 19:36:01 +0100
commit0587223489b3c2e44c7670cb12dac1d221f0a455 (patch)
tree3a938e8c27e7a52ba18e02646bf3b3eb7a0254e6
parent15e692a7d27f36d2f5079d4e74232c2dd4fb5e58 (diff)
downloadwekan-0587223489b3c2e44c7670cb12dac1d221f0a455.tar.gz
wekan-0587223489b3c2e44c7670cb12dac1d221f0a455.tar.bz2
wekan-0587223489b3c2e44c7670cb12dac1d221f0a455.zip
Fix avatar support on Sanstorm
The bug comes for 9154b06 which this commit partially reverts. The synchronization between the user document profile and the Sandstorm HTTP headers is still not perfect. Having a clean model may requires the `accounts-sandstorm` to expose a hook to modify the user document just after the `services.sandstorm` credentials are updated. Fixes #460
-rw-r--r--client/components/users/userAvatar.jade4
-rw-r--r--models/users.js13
-rw-r--r--sandstorm.js15
3 files changed, 16 insertions, 16 deletions
diff --git a/client/components/users/userAvatar.jade b/client/components/users/userAvatar.jade
index 44e899a7..e08666e5 100644
--- a/client/components/users/userAvatar.jade
+++ b/client/components/users/userAvatar.jade
@@ -1,7 +1,7 @@
template(name="userAvatar")
a.member.js-member(title="{{userData.profile.fullname}} ({{userData.username}})")
- if userData.getAvatarUrl
- img.avatar.avatar-image(src=userData.getAvatarUrl)
+ if userData.profile.avatarUrl
+ img.avatar.avatar-image(src=userData.profile.avatarUrl)
else
+userAvatarInitials(userId=userData._id)
diff --git a/models/users.js b/models/users.js
index cf4c4193..8dd5ed78 100644
--- a/models/users.js
+++ b/models/users.js
@@ -47,19 +47,6 @@ Users.helpers({
return _.contains(invitedBoards, boardId);
},
- getAvatarUrl() {
- // Although we put the avatar picture URL in the `profile` object, we need
- // to support Sandstorm which put in the `picture` attribute by default.
- // XXX Should we move both cases to `picture`?
- if (this.picture) {
- return this.picture;
- } else if (this.profile && this.profile.avatarUrl) {
- return this.profile.avatarUrl;
- } else {
- return null;
- }
- },
-
getInitials() {
const profile = this.profile || {};
if (profile.initials)
diff --git a/sandstorm.js b/sandstorm.js
index 5148095f..85124f04 100644
--- a/sandstorm.js
+++ b/sandstorm.js
@@ -65,11 +65,23 @@ if (isSandstorm && Meteor.isServer) {
// accesses the document, but in case a already known user comes back, we
// need to update his associated document to match the request HTTP headers
// informations.
+ // XXX We need to update this document even if the initial route is not `/`.
+ // Unfortuanlty I wasn't able to make the Webapp.rawConnectHandlers solution
+ // work.
const user = Users.findOne({
'services.sandstorm.id': req.headers['x-sandstorm-user-id'],
});
if (user) {
- updateUserPermissions(user._id, user.permissions);
+ // XXX At this point the user.services.sandstorm credentials haven't been
+ // updated, which mean that the user will have to restart the application
+ // a second time to see its updated name and avatar.
+ Users.update(user._id, {
+ $set: {
+ 'profile.fullname': user.services.sandstorm.name,
+ 'profile.avatarUrl': user.services.sandstorm.picture,
+ },
+ });
+ updateUserPermissions(user._id, user.services.sandstorm.permissions);
}
});
@@ -109,6 +121,7 @@ if (isSandstorm && Meteor.isServer) {
$set: {
username: generateUniqueUsername(username, appendNumber),
'profile.fullname': doc.services.sandstorm.name,
+ 'profile.avatarUrl': doc.services.sandstorm.picture,
},
});