revert(avatars): enable default avatar (#304) (#305) r=@rfk

This reverts commit 01b0e41610.
This commit is contained in:
Vlad Filippov 2018-02-27 22:54:38 -05:00 коммит произвёл GitHub
Родитель 01b0e41610
Коммит 158eb63a0e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
11 изменённых файлов: 14 добавлений и 106 удалений

Просмотреть файл

@ -84,7 +84,7 @@ curl -v \
{
"uid": "6d940dd41e636cc156074109b8092f96",
"email": "user@example.domain",
"avatar": "https://firefoxusercontent.com/a9bff302615cd015692a099f691205cc"
"avatar": "https://secure.gravatar.com/avatar/6d940dd41e636cc156074109b8092f96"
}
```
@ -166,27 +166,15 @@ curl -v \
"https://profile.accounts.firefox.com/v1/avatar"
```
#### Response
#### Response
```json
{
"id": "a9bff302615cd015692a099f691205cc",
"avatar": "https://firefoxusercontent.com/a9bff302615cd015692a099f691205cc"
"id": "81625c14128d46c2b600e74a017fa4a8",
"url": "https://secure.gravatar.com/avatar/6d940dd41e636cc156074109b8092f96"
}
```
#### Response (no avatar set)
```json
{
"id": "00000000000000000000000000000000",
"avatar": "https://firefoxusercontent.com/00000000000000000000000000000000"
}
```
### POST /v1/avatar/upload
- scope: `profile:avatar:write`

Двоичные данные
lib/assets/default-profile.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 2.5 KiB

Двоичные данные
lib/assets/default-profile_large.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.0 KiB

Двоичные данные
lib/assets/default-profile_small.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.3 KiB

Просмотреть файл

@ -133,12 +133,6 @@ const conf = convict({
doc: 'Pattern to generate FxA avatar URLs. {id} will be replaced.',
default: 'http://127.0.0.1:1112/a/{id}',
env: 'IMG_URL'
},
defaultAvatarId: {
default: '00000000000000000000000000000000',
doc: 'Default avatar id',
env: 'DEFAULT_AVATAR_ID',
format: String
}
},
logging: {

Просмотреть файл

@ -1,15 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const config = require('../../config');
const FXA_URL_TEMPLATE = config.get('img.url');
function fxaUrl(id) {
return FXA_URL_TEMPLATE.replace('{id}', id);
}
module.exports = {
fxaUrl: fxaUrl
};

Просмотреть файл

@ -5,25 +5,19 @@
const Joi = require('joi');
const db = require('../../db');
const config = require('../../config');
const hex = require('buf').to.hex;
const validate = require('../../validate');
const logger = require('../../logging')('routes.avatar.get');
const avatarShared = require('./_shared');
const DEFAULT_AVATAR = {
avatar: avatarShared.fxaUrl(config.get('img.defaultAvatarId')),
id: config.get('img.defaultAvatarId')
};
function avatarOrDefault(avatar) {
const EMPTY = Object.create(null);
function avatarOrEmpty(avatar) {
if (avatar) {
return {
id: hex(avatar.id),
avatar: avatar.url
};
}
return DEFAULT_AVATAR;
return EMPTY;
}
module.exports = {
@ -42,7 +36,7 @@ module.exports = {
handler: function avatar(req, reply) {
var uid = req.auth.credentials.user;
db.getSelectedAvatar(uid)
.then(avatarOrDefault)
.then(avatarOrEmpty)
.done(function (result) {
var rep = reply(result);
if (result.id) {

Просмотреть файл

@ -13,14 +13,15 @@ const img = require('../../img');
const notifyProfileUpdated = require('../../updates-queue');
const validate = require('../../validate');
const workers = require('../../img-workers');
const avatarShared = require('./_shared');
const FXA_PROVIDER = 'fxa';
const FXA_URL_TEMPLATE = config.get('img.url');
assert(FXA_URL_TEMPLATE.indexOf('{id}') !== -1,
'img.url must contain the string "{id}"');
const DEFAULT_AVATAR_ID = config.get('img.defaultAvatarId');
assert(DEFAULT_AVATAR_ID.length === 32, 'img.default');
function fxaUrl(id) {
return FXA_URL_TEMPLATE.replace('{id}', id);
}
module.exports = {
auth: {
@ -49,9 +50,7 @@ module.exports = {
handler: function upload(req, reply) {
req.server.methods.batch.cache.drop(req, function() {
var id = img.id();
// precaution to avoid the default id from being overwritten
assert(id !== DEFAULT_AVATAR_ID);
var url = avatarShared.fxaUrl(id);
var url = fxaUrl(id);
var uid = req.auth.credentials.user;
workers.upload(id, req.payload, req.headers)
.then(function save() {

Просмотреть файл

@ -3,19 +3,11 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const Hapi = require('hapi');
const Boom = require('boom');
const path = require('path');
const Inert = require('inert');
const config = require('../config').getProperties();
const logger = require('../logging')('server.static');
const DEFAULT_AVATAR_DIR = path.resolve(__dirname, '..', 'assets');
const DEFAULT_AVATAR_ID = config.img.defaultAvatarId;
const DEFAULT_AVATAR = path.resolve(DEFAULT_AVATAR_DIR, 'default-profile.png');
const DEFAULT_AVATAR_LARGE = path.resolve(DEFAULT_AVATAR_DIR, 'default-profile_large.png');
const DEFAULT_AVATAR_SMALL = path.resolve(DEFAULT_AVATAR_DIR, 'default-profile_small.png');
exports.create = function() {
var server = new Hapi.Server({
debug: false
@ -28,26 +20,6 @@ exports.create = function() {
port: config.server.port + 1
});
server.route({
method: 'GET',
path: '/a/' + DEFAULT_AVATAR_ID + '{type?}',
handler: function (request, reply) {
switch (request.params.type) {
case '':
reply.file(DEFAULT_AVATAR);
break;
case '_small':
reply.file(DEFAULT_AVATAR_SMALL);
break;
case '_large':
reply.file(DEFAULT_AVATAR_LARGE);
break;
default:
reply(Boom.notFound());
}
}
});
server.route({
method: 'GET',
path: '/a/{id}',

Просмотреть файл

@ -13,12 +13,8 @@ const checksum = require('checksum');
const assert = require('insist');
const P = require('../lib/promise');
const config = require('../lib/config');
const avatarShared = require('../lib/routes/avatar/_shared');
const assertSecurityHeaders = require('./lib/util').assertSecurityHeaders;
const DEFAULT_AVATAR_ID = config.get('img.defaultAvatarId');
function randomHex(bytes) {
return crypto.randomBytes(bytes).toString('hex');
}
@ -77,7 +73,7 @@ describe('/profile', function() {
assert.equal(res.statusCode, 200);
assert.equal(res.result.uid, USERID);
assert.equal(res.result.email, 'user@example.domain');
assert.equal(res.result.avatar, avatarShared.fxaUrl(DEFAULT_AVATAR_ID), 'return default avatar');
assert.equal(res.result.avatar, null);
assertSecurityHeaders(res);
});
});

Просмотреть файл

@ -1,20 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const assert = require('insist');
const avatarShared = require('../../../lib/routes/avatar/_shared');
const config = require('../../../lib/config').getProperties();
/*global describe,it,beforeEach*/
describe('routes/avatar/_shared', function () {
describe('fxaUrl', function () {
it('creates a proper avatarUrl', function () {
const id = 'foo';
assert.equal(avatarShared.fxaUrl(id), config.img.url.replace('{id}', id));
});
});
});