Merge pull request #854 from hackmdio/feature/disableGravatar

Allow to disable gravatar
This commit is contained in:
Christoph (Sheogorath) Kern
2018-06-24 01:59:06 +02:00
committed by GitHub
5 changed files with 23 additions and 27 deletions

View File

@@ -147,5 +147,6 @@ module.exports = {
},
email: true,
allowEmailRegister: true,
allowGravatar: true,
allowPDFExport: true
}

View File

@@ -120,5 +120,6 @@ module.exports = {
},
email: toBooleanConfig(process.env.HMD_EMAIL),
allowEmailRegister: toBooleanConfig(process.env.HMD_ALLOW_EMAIL_REGISTER),
allowGravatar: toBooleanConfig(process.env.HMD_ALLOW_GRAVATAR),
allowPDFExport: toBooleanConfig(process.env.HMD_ALLOW_PDF_EXPORT)
}

View File

@@ -1,5 +1,6 @@
'use strict'
// external modules
const md5 = require('blueimp-md5')
const randomcolor = require('randomcolor')
const config = require('./config')
@@ -24,6 +25,17 @@ exports.generateAvatar = function (name) {
return svg
}
exports.generateAvatarURL = function (name) {
return config.serverURL + '/user/' + name + '/avatar.svg'
exports.generateAvatarURL = function (name, email = '', big = true) {
let photo
if (email !== '' && config.allowGravatar) {
photo = 'https://www.gravatar.com/avatar/' + md5(email.toLowerCase())
if (big) {
photo += '?s=400'
} else {
photo += '?s=96'
}
} else {
photo = config.serverURL + '/user/' + (name || email.substring(0, email.lastIndexOf('@')) || md5(email.toLowerCase())) + '/avatar.svg'
}
return photo
}

View File

@@ -1,6 +1,5 @@
'use strict'
// external modules
var md5 = require('blueimp-md5')
var Sequelize = require('sequelize')
var scrypt = require('scrypt')
@@ -128,10 +127,7 @@ module.exports = function (sequelize, DataTypes) {
}
break
case 'dropbox':
// no image api provided, use gravatar
photo = 'https://www.gravatar.com/avatar/' + md5(profile.emails[0].value)
if (bigger) photo += '?s=400'
else photo += '?s=96'
photo = generateAvatarURL('', profile.emails[0].value, bigger)
break
case 'google':
photo = profile.photos[0].value
@@ -139,35 +135,19 @@ module.exports = function (sequelize, DataTypes) {
else photo = photo.replace(/(\?sz=)\d*$/i, '$196')
break
case 'ldap':
// no image api provided,
// use gravatar if email exists,
// otherwise generate a letter avatar
if (profile.emails[0]) {
photo = 'https://www.gravatar.com/avatar/' + md5(profile.emails[0])
if (bigger) photo += '?s=400'
else photo += '?s=96'
} else {
photo = generateAvatarURL(profile.username)
}
photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
break
case 'saml':
if (profile.emails[0]) {
photo = 'https://www.gravatar.com/avatar/' + md5(profile.emails[0])
if (bigger) photo += '?s=400'
else photo += '?s=96'
} else {
photo = generateAvatarURL(profile.username)
}
photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
break
}
return photo
},
parseProfileByEmail: function (email) {
var photoUrl = 'https://www.gravatar.com/avatar/' + md5(email)
return {
name: email.substring(0, email.lastIndexOf('@')),
photo: photoUrl + '?s=96',
biggerphoto: photoUrl + '?s=400'
photo: generateAvatarURL('', email, false),
biggerphoto: generateAvatarURL('', email, true)
}
}
}