Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var User = require(__dirname + '/schema.js');
- User.find({}, function(err, docs){
- if(!Array.isArray(docs)) return;
- for (var i = 0; i < docs.length; i++) {
- let modified = false;
- if(docs[i].avatarUrl == '/api/user/default.png'){
- docs[i].avatarUrl = '/assets/default.png';
- docs[i].markModified('avatarUrl');
- modified = true;
- }
- if(modified) docs[i].save(function(){});
- }
- });
- module.exports = function(waw) {
- waw.serve(process.cwd()+'/client/dist/client');
- let pages = ['/', '/profile', '/friends', '/groups', '/sign', '/changepass', '/groups'];
- waw.url(process.cwd()+'/client/dist/client/index.html', pages);
- waw.User = User;
- /*
- * Set is on users from config
- */
- const set_is = (email, is)=>{
- User.findOne({
- email: email
- }, function(err, user){
- if(!user) return;
- if(!user.is) user.is={};
- user.is[is] = true;
- user.markModified('is');
- user.save((err)=>{
- if(err) console.log(err);
- });
- });
- }
- if(waw.config.user && waw.config.user.is){
- for(let is in waw.config.user.is){
- let emails = waw.config.user.is[is].split(' ');
- for (var i = 0; i < emails.length; i++) {
- set_is(emails[i], is);
- }
- }
- }
- /*
- * Routing
- */
- waw.crud('user', {
- get: {
- query: function(req){
- return {
- domain: req.get('host')
- };
- },
- select: function(){
- return '-password';
- }
- },
- fetch: [{
- query: function(req, res, next) {
- return {
- _id: req.user._id,
- domain: req.get('host')
- }
- },
- select: function(){
- return '-password';
- }
- }, {
- name: 'other',
- query: function(req, res, next) {
- return {
- _id: req.body._id,
- domain: req.get('host')
- }
- },
- select: function(){
- return '-password';
- }
- }],
- update: [{
- ensure: function(req, res, next){
- if(req.user){
- req.body.is = req.user.is;
- if(req.body.remove){
- req.body.is[req.body.remove] = false;
- }
- return next();
- }
- req.session.data = req.body.data;
- res.json(true);
- },
- query: function(req, res, next) {
- return {
- _id: req.user._id,
- domain: req.get('host')
- }
- }
- }, {
- name: 'admin',
- ensure: function(req, res, next){
- if(req.user.is.admin) next();
- else res.send(false);
- },
- query: function(req, res){
- return {
- _id: req.body._id,
- domain: req.get('host')
- }
- }
- }],
- delete: [{
- ensure: function(req, res){
- if(req.user){
- for (var i = req.user.domain.length - 1; i >= 0; i--) {
- if(req.user.domain[i] == req.get('host')){
- req.user.domain.splice(i, 1);
- }
- }
- req.user.save(function(){
- res.send(true);
- });
- }else res.send(false);
- }
- }, {
- name: 'admin',
- ensure: function(req, res, next){
- if(req.user.is.admin){
- User.findOne({
- _id: req.body._id
- }, function(err, doc){
- if(err || !doc) return res.send(false);
- for (var i = doc.domain.length - 1; i >= 0; i--) {
- if(doc.domain[i] == req.get('host')){
- doc.domain.splice(i, 1);
- }
- }
- doc.save(function(){
- res.send(true);
- });
- });
- }else res.send(false);
- }
- }]
- });
- var router = waw.router('/api/user');
- router.post("/avatar", function(req, res) {
- req.user.avatarUrl = '/api/user/avatar/' + req.user._id + '.jpg?' + Date.now();
- waw.parallel([function(next) {
- req.user.save(next);
- }, function(next) {
- waw.dataUrlToLocation(req.body.dataUrl, __dirname + '/files/', req.user._id + '.jpg', next);
- }], function() {
- res.json(req.user.avatarUrl);
- });
- });
- router.get("/avatar/:file", function(req, res) {
- res.sendFile(__dirname + '/files/' + req.params.file);
- });
- /*
- * End of User Management
- */
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement