added users and groups
This commit is contained in:
		
							
								
								
									
										53
									
								
								src/controllers/group.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/controllers/group.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
import GroupService from '../services/group.js';
 | 
			
		||||
import UserService from '../services/user.js';
 | 
			
		||||
import jwt from 'jsonwebtoken';
 | 
			
		||||
import config from '../../config.json' with {type: "json"};
 | 
			
		||||
import statuses from '../utils/status.js';
 | 
			
		||||
import log from '../utils/log.js';
 | 
			
		||||
 | 
			
		||||
const TAG = "/controllers/group.js"
 | 
			
		||||
 | 
			
		||||
class GroupController {
 | 
			
		||||
    async create(req, res) {
 | 
			
		||||
        try {
 | 
			
		||||
            let { name } = req.params;
 | 
			
		||||
 | 
			
		||||
            let user = jwt.decode(req.headers.authorization.split(' ')[1], config.secret);
 | 
			
		||||
            let status = await GroupService.create(name, user.login.id);
 | 
			
		||||
                
 | 
			
		||||
            log.info(`New group with name ${name} was just created by user ${user.login.username}`);
 | 
			
		||||
 | 
			
		||||
            UserService.joinGroup(user.login.id, status.id);
 | 
			
		||||
            return res.status(200).send("Successfull");
 | 
			
		||||
        } catch (e) { return res.status(500).send(log.unknownError(`${TAG}/create: ${e}`)); }
 | 
			
		||||
    }
 | 
			
		||||
    async join(req, res) {
 | 
			
		||||
        try {
 | 
			
		||||
            let { id } = req.params;
 | 
			
		||||
 | 
			
		||||
            await GroupService.getById(id);
 | 
			
		||||
 | 
			
		||||
            let user = jwt.decode(req.headers.authorization.split(' ')[1], config.secret);
 | 
			
		||||
            let status = await UserService.joinGroup(user.login.id, id);
 | 
			
		||||
 | 
			
		||||
            if (status == statuses.duplicate) return res.status(400).send("Already in group");
 | 
			
		||||
 | 
			
		||||
            log.info(`User ${user.login.username} has just joined group with ID ${id}`);
 | 
			
		||||
            return res.status(200).send("Successfull");
 | 
			
		||||
        } catch (e) { return res.status(500).send(log.unknownError(`${TAG}/join: ${e}`)); }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async updatePassword(req, res) {
 | 
			
		||||
        try {
 | 
			
		||||
            let { id } = req.params;
 | 
			
		||||
            let { password } = req.body;
 | 
			
		||||
 | 
			
		||||
            await GroupService.updatePassword(id, password);
 | 
			
		||||
            log.info(`Password for group with ID ${id} was updated`);
 | 
			
		||||
            return res.status(200).send("Successfull");
 | 
			
		||||
 | 
			
		||||
        } catch (e) { return res.status(500).send(log.unknownError(`${TAG}/updatePassword ${e}`)); }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default new GroupController();
 | 
			
		||||
							
								
								
									
										33
									
								
								src/controllers/user.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/controllers/user.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
import UserService from '../services/user.js';
 | 
			
		||||
import log from '../utils/log.js';
 | 
			
		||||
import bcrypt from 'bcrypt';
 | 
			
		||||
import genToken from '../utils/jwt.js';
 | 
			
		||||
 | 
			
		||||
const TAG = "/controllers/userjs"
 | 
			
		||||
 | 
			
		||||
class UserController {
 | 
			
		||||
    async register (req, res) {
 | 
			
		||||
        try {
 | 
			
		||||
            const {username, password} = req.body;
 | 
			
		||||
            
 | 
			
		||||
            await UserService.create(username, password);
 | 
			
		||||
            
 | 
			
		||||
            log.info(`New user with name ${username} has just registered`);
 | 
			
		||||
            return res.status(200).send("Successfull register")
 | 
			
		||||
        } catch (e) { res.status(500).send(log.unknownError(`${TAG}/register: ${e}`)); }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async login(req, res) {
 | 
			
		||||
        try {
 | 
			
		||||
            const {username, password} = req.body;
 | 
			
		||||
 | 
			
		||||
            const user = await UserService.getByUsername(username);
 | 
			
		||||
            if (!bcrypt.compareSync(password, user.password)) return res.status(401).send("Wrong password");
 | 
			
		||||
 | 
			
		||||
            const token = genToken(user);
 | 
			
		||||
            return res.status(200).send(token);
 | 
			
		||||
        } catch (e) { res.status(500).send(log.unknownError(`${TAG}/login: ${e}`)); }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default new UserController()
 | 
			
		||||
		Reference in New Issue
	
	Block a user