Add support for profile photos; default image
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
const { Controller } = require('libflitter')
|
||||
const Validator = require('email-validator')
|
||||
const path = require('path')
|
||||
|
||||
class ProfileController extends Controller {
|
||||
static get services() {
|
||||
return [...super.services, 'models']
|
||||
return [...super.services, 'models', 'utility']
|
||||
}
|
||||
|
||||
async fetch(req, res, next) {
|
||||
@@ -72,6 +73,45 @@ class ProfileController extends Controller {
|
||||
return res.api()
|
||||
}
|
||||
|
||||
async update_photo(req, res, next) {
|
||||
const User = this.models.get('auth:User')
|
||||
let user
|
||||
if ( req.params.user_id === 'me' ) user = req.user
|
||||
else user = await User.findById(req.params.user_id)
|
||||
|
||||
if ( !user )
|
||||
return res.status(404)
|
||||
.message('No user found with the specified ID.')
|
||||
.api()
|
||||
|
||||
if ( !req?.uploads?.photo )
|
||||
return res.status(400)
|
||||
.message('Missing required field: file')
|
||||
.api()
|
||||
|
||||
user.photo_file_id = req.uploads.photo.id
|
||||
await user.save()
|
||||
return res.api()
|
||||
}
|
||||
|
||||
async get_photo(req, res, next) {
|
||||
const User = this.models.get('auth:User')
|
||||
let user
|
||||
if ( req.params.user_id === 'me' ) user = req.user
|
||||
else user = await User.findById(req.params.user_id)
|
||||
|
||||
if ( !user )
|
||||
return res.status(404)
|
||||
.message('No user found with the specified ID.')
|
||||
.api()
|
||||
|
||||
const photo = await user.photo()
|
||||
if ( photo ) return photo.send(res)
|
||||
|
||||
// The user does not have a profile. Send the default.
|
||||
return res.sendFile(this.utility.path('app/assets/people.png'))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = exports = ProfileController
|
||||
|
||||
Reference in New Issue
Block a user