Since Gravatar is an external image source and not perfect from a privacy perspective, forbidding it allows to improve privacy. This commit also simplifies and optimizes the avatar code. Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| // external modules
 | |
| const md5 = require('blueimp-md5')
 | |
| const randomcolor = require('randomcolor')
 | |
| const config = require('./config')
 | |
| 
 | |
| // core
 | |
| exports.generateAvatar = function (name) {
 | |
|   const color = randomcolor({
 | |
|     seed: name,
 | |
|     luminosity: 'dark'
 | |
|   })
 | |
|   const letter = name.substring(0, 1).toUpperCase()
 | |
| 
 | |
|   let svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
 | |
|   svg += '<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" width="96" version="1.1" viewBox="0 0 96 96">'
 | |
|   svg += '<g>'
 | |
|   svg += '<rect width="96" height="96" fill="' + color + '" />'
 | |
|   svg += '<text font-size="64px" font-family="sans-serif" text-anchor="middle" fill="#ffffff">'
 | |
|   svg += '<tspan x="48" y="72" stroke-width=".26458px" fill="#ffffff">' + letter + '</tspan>'
 | |
|   svg += '</text>'
 | |
|   svg += '</g>'
 | |
|   svg += '</svg>'
 | |
| 
 | |
|   return 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
 | |
| }
 |