This commit is contained in:
2017-09-10 18:52:53 +01:00
parent 3c0e4a0184
commit 98f4d61624
30 changed files with 11946 additions and 0 deletions

66
server/routes/upgrade.js Normal file
View File

@@ -0,0 +1,66 @@
const express = require('express');
const admin = require('firebase-admin');
const router = express.Router();
const route = function(db) {
router.post('/', function(req, res, next) {
const currentUid = req.body.currentUid;
const newUid = req.body.newUid;
if (!currentUid || !newUid) {
return res.json({
success: false,
error: 'currentUid or newUid missing',
});
}
const currentRef = db.ref(`/users/${currentUid}`);
const newRef = db.ref(`/users/${newUid}`);
currentRef.once('value', function(s) {
const currentData = s.val();
// set data for new user
newRef.set(currentData);
// delete data for current user
currentRef.remove().then(function() {
// delete current user
admin.auth().deleteUser(currentUid).then(function() {
if (currentData.approved) {
// TODO: Does this endpoint need more protection?
// transfer approval to new user
admin.auth().createCustomToken(newUid, {
approved: true,
}).then(function(customToken) {
return res.json({
success: true,
token: customToken,
});
}).catch(function(err) {
console.error('Error creating custom token', err);
return res.status(500).json({
success: false,
error: err,
});
});
}
}).catch(function(err) {
console.error(err);
return res.status(500).json({
success: false,
error: err,
});
});
}).catch(function(err) {
console.error(err);
return res.status(500).json({
success: false,
error: err,
});
});
});
});
return router;
}
module.exports = route;