mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
chore(): rename website/src -> website/server and website/public -> website/client (#7199)
This commit is contained in:
83
website/server/libs/api-v2/firebase.js
Normal file
83
website/server/libs/api-v2/firebase.js
Normal file
@@ -0,0 +1,83 @@
|
||||
var Firebase = require('firebase');
|
||||
var nconf = require('nconf');
|
||||
var isProd = nconf.get('NODE_ENV') === 'production';
|
||||
var firebaseConfig = nconf.get('FIREBASE');
|
||||
|
||||
var firebaseRef;
|
||||
var isFirebaseEnabled = (nconf.get('NODE_ENV') === 'production') && (firebaseConfig.ENABLED === 'true');
|
||||
|
||||
import { TAVERN_ID } from '../../models/group';
|
||||
|
||||
// Setup
|
||||
if(isFirebaseEnabled){
|
||||
firebaseRef = new Firebase('https://' + firebaseConfig.APP + '.firebaseio.com');
|
||||
|
||||
// TODO what happens if an op is sent before client is authenticated?
|
||||
firebaseRef.authWithCustomToken(firebaseConfig.SECRET, function(err, authData){
|
||||
// TODO it's ok to kill the server here? what if FB is offline?
|
||||
if(err) throw new Error('Impossible to authenticate Firebase');
|
||||
});
|
||||
}
|
||||
|
||||
var api = module.exports = {};
|
||||
|
||||
api.updateGroupData = function(group){
|
||||
if(!isFirebaseEnabled) return;
|
||||
// TODO is throw ok? we don't have callbacks
|
||||
if(!group) throw new Error('group is required.');
|
||||
// Return in case of tavern (comparison working because we use string for _id)
|
||||
if(group._id === TAVERN_ID) return;
|
||||
|
||||
firebaseRef.child('rooms/' + group._id)
|
||||
.set({
|
||||
name: group.name
|
||||
});
|
||||
};
|
||||
|
||||
api.addUserToGroup = function(groupId, userId){
|
||||
if(!isFirebaseEnabled) return;
|
||||
if(!userId || !groupId) throw new Error('groupId, userId are required.');
|
||||
if(groupId === TAVERN_ID) return;
|
||||
|
||||
firebaseRef.child('members/' + groupId + '/' + userId)
|
||||
.set(true);
|
||||
|
||||
firebaseRef.child('users/' + userId + '/rooms/' + groupId)
|
||||
.set(true);
|
||||
};
|
||||
|
||||
api.removeUserFromGroup = function(groupId, userId){
|
||||
if(!isFirebaseEnabled) return;
|
||||
if(!userId || !groupId) throw new Error('groupId, userId are required.');
|
||||
if(groupId === TAVERN_ID) return;
|
||||
|
||||
firebaseRef.child('members/' + groupId + '/' + userId)
|
||||
.remove();
|
||||
|
||||
firebaseRef.child('users/' + userId + '/rooms/' + groupId)
|
||||
.remove();
|
||||
};
|
||||
|
||||
api.deleteGroup = function(groupId){
|
||||
if(!isFirebaseEnabled) return;
|
||||
if(!groupId) throw new Error('groupId is required.');
|
||||
if(groupId === TAVERN_ID) return;
|
||||
|
||||
firebaseRef.child('rooms/' + groupId)
|
||||
.remove();
|
||||
|
||||
// TODO not really necessary as long as we only store room data,
|
||||
// as empty objects are automatically deleted (/members/... in future...)
|
||||
firebaseRef.child('members/' + groupId)
|
||||
.remove();
|
||||
};
|
||||
|
||||
// TODO not really necessary as long as we only store room data,
|
||||
// as empty objects are automatically deleted
|
||||
api.deleteUser = function(userId){
|
||||
if(!isFirebaseEnabled) return;
|
||||
if(!userId) throw new Error('userId is required.');
|
||||
|
||||
firebaseRef.child('users/' + userId)
|
||||
.remove();
|
||||
};
|
||||
Reference in New Issue
Block a user