// dependency modules
const express = require('express')
const AccountRepository = require('../repository/account')
// controller
// using to define router in controller
// params
// - db <connection>: instance of mongoose connection
// - oauth <object>: contains information about oauth provider
// see ./lib/derault-value.js fo more information
// return express router
/**
* accountController module
@module accountController
*/
module.exports = function (db, treant) {
// create oauth provider connector
var router = express.Router()
var accountRepo = new AccountRepository(db)
router.route('/me')
.get(treant.check({getAcc: true}), function (req, res) {
treant.gAccount(req.token.g_access_token, function (err, gAccount) {
if (err) return res.status(500).json({message: err.message})
var account = req.account
res.json({
language: account.language,
name: account.name,
groups: account.groups,
avatar: gAccount.image.url
})
})
})
router.route('/me/language/:language')
.put(function (req, res) {
// verify language
if (!req.params.language || req.params.language.length !== 2) {
res.status(400).json({
message: 'bad request',
data: 'language code invalid, it must same as "en"'
})
return
}
accountRepo.authenticateEx(req, function (authErr, user) {
if (authErr) {
res.status(401).json({
message: 'unauthorized',
data: authErr
})
return
}
accountRepo.updateLanguage(user.id, req.params.language, function (repoErr) {
if (repoErr) {
res.status(500).json(repoErr)
return
}
res.json({
message: 'done'
})
})
})
})
router.route('/me/scheduler/:id')
.put(function (req, res) {
accountRepo.authenticateEx(req, function (authErr, user) {
if (authErr) {
res.status(401).json({
message: 'unauthorized',
data: authErr
})
return
}
accountRepo.updateScheduler(user.id, req.params.id, function (repoErr) {
if (repoErr) {
res.status(500).json(repoErr)
return
}
res.json({
message: 'done'
})
})
})
})
return router
}