Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6,802 changes: 6,802 additions & 0 deletions modulo5/cookenu/package-lock.json

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions modulo5/criptografia-e-user-roles/getUserByEmail.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUserByEmail = void 0;
const conection_1 = __importDefault(require("./src/conection"));
const getUserByEmail = (email) => __awaiter(void 0, void 0, void 0, function* () {
const result = yield conection_1.default
.select("*")
.from("userAulaAltenticacao")
.where({ email });
return result[0];
});
exports.getUserByEmail = getUserByEmail;
20 changes: 20 additions & 0 deletions modulo5/criptografia-e-user-roles/src/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.app = void 0;
const express_1 = __importDefault(require("express"));
const cors_1 = __importDefault(require("cors"));
exports.app = (0, express_1.default)();
exports.app.use(express_1.default.json());
exports.app.use((0, cors_1.default)());
const server = exports.app.listen(process.env.PORT || 3003, () => {
if (server) {
const address = server.address();
console.log(`Server is running in http://localhost:${address.port}`);
}
else {
console.error(`Failure upon starting server.`);
}
});
20 changes: 20 additions & 0 deletions modulo5/criptografia-e-user-roles/src/conection.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const knex_1 = __importDefault(require("knex"));
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
const connection = (0, knex_1.default)({
client: 'mysql',
connection: {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_SCHEMA,
port: 3306,
multipleStatements: true
}
});
exports.default = connection;
27 changes: 27 additions & 0 deletions modulo5/criptografia-e-user-roles/src/create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createUser = void 0;
const conection_1 = __importDefault(require("../conection"));
const CreateUserAulaAltenticacao = "userAulaAltenticacao";
const createUser = (id, email, password) => __awaiter(void 0, void 0, void 0, function* () {
yield conection_1.default
.insert({
id,
email,
password,
})
.into(CreateUserAulaAltenticacao);
});
exports.createUser = createUser;
16 changes: 16 additions & 0 deletions modulo5/criptografia-e-user-roles/src/data/data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const knex_1 = __importDefault(require("knex"));
const connection = (0, knex_1.default)({
client: "mysql",
connection: {
host: process.env.DB_HOST,
port: 3303,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE_NAME,
},
});
37 changes: 37 additions & 0 deletions modulo5/criptografia-e-user-roles/src/endpoint/getUser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getInformationUser = void 0;
const types_1 = require("./../types/types");
const conection_1 = __importDefault(require("../conection"));
const getData_1 = require("../services/getData");
const getInformationUser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
let errorCode = 400;
const token = req.headers.authorization;
try {
const verifyToken = (0, getData_1.getData)(token);
if (verifyToken.role === types_1.USER_ROLES.NORMAL) {
errorCode = 403;
throw new Error("Usuário sem permissão, somente usuário com role = NORMAL, podem ter acesso a esse edpoint");
}
const [user] = yield (0, conection_1.default)('User')
.select()
.where({ id: verifyToken.id });
res.status(200).send({ id: user.id, email: user.email, role: user.role });
}
catch (error) {
res.status(errorCode).send({ message: error.message || error.sqlMessage });
}
});
exports.getInformationUser = getInformationUser;
57 changes: 57 additions & 0 deletions modulo5/criptografia-e-user-roles/src/endpoint/login.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const getUserByEmail_1 = require("../../getUserByEmail");
const generateHash_1 = require("../services/generateHash");
const token_1 = require("../services/token");
function login(req, res) {
return __awaiter(this, void 0, void 0, function* () {
try {
const { email, password } = req.body;
const userData = {
email,
password,
};
if (!email || email.indexOf("@") === -1) {
res.statusCode = 401;
throw new Error("formato de email invalido");
}
const user = yield (0, getUserByEmail_1.getUserByEmail)(userData.email);
if (!user) {
res.statusCode = 401;
throw new Error("Usuário inexistente");
}
let hashManager = new generateHash_1.HashManager();
const passwordIsCorrect = hashManager.compareHash(password, user.password);
if (!passwordIsCorrect) {
res.statusCode = 401;
throw new Error("Senha incorreta");
}
const authenticator = new token_1.Authenticator();
const payload = {
id: user.id,
role: user.role
};
const token = authenticator.generateToken(payload);
res.status(200).send(token);
}
catch (error) {
if (res.statusCode === 200) {
console.log(error);
res.status(500).send({ message: "Internal server error" });
}
else {
res.send({ message: error.message });
}
}
});
}
exports.default = login;
58 changes: 58 additions & 0 deletions modulo5/criptografia-e-user-roles/src/endpoint/signup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.signUp = void 0;
const conection_1 = __importDefault(require("../conection"));
const idGenerator_1 = require("../services/idGenerator");
const token_1 = require("../services/token");
const generateHash_1 = require("../services/generateHash");
function signUp(req, res) {
return __awaiter(this, void 0, void 0, function* () {
console.log("chegou");
const { email, password, role } = req.body;
try {
if (!email || email.indexOf("@") === -1) {
throw new Error("formato de email invalido");
}
if (!password || password.length < 6) {
throw new Error("senha muito curta");
}
if (!role) {
throw new Error("Preencha o campo 'role' ");
}
const id = (0, idGenerator_1.genereteId)();
let hashManager = new generateHash_1.HashManager();
const cypherPassword = hashManager.createHash(password);
const userData = {
id,
email,
password: cypherPassword,
role
};
yield (0, conection_1.default)('userAulaAltenticacao')
.insert(userData);
const authenticator = new token_1.Authenticator();
const payload = {
id: userData.id,
role
};
const token = authenticator.generateToken(payload);
res.status(201).send("usuario criado com sucesso. " + token);
}
catch (error) {
res.status(500).send(error.message);
}
});
}
exports.signUp = signUp;
10 changes: 10 additions & 0 deletions modulo5/criptografia-e-user-roles/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const app_1 = require("./app");
const login_1 = __importDefault(require("./endpoint/login"));
const signup_1 = require("./endpoint/signup");
app_1.app.post("/user/signup", signup_1.signUp);
app_1.app.post("/user/login", login_1.default);
27 changes: 27 additions & 0 deletions modulo5/criptografia-e-user-roles/src/model/create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createUser = void 0;
const conection_1 = __importDefault(require("../conection"));
const CreateUserAulaAltenticacao = "userAulaAltenticacao";
const createUser = (id, email, password) => __awaiter(void 0, void 0, void 0, function* () {
yield conection_1.default
.insert({
id,
email,
password,
})
.into(CreateUserAulaAltenticacao);
});
exports.createUser = createUser;
18 changes: 18 additions & 0 deletions modulo5/criptografia-e-user-roles/src/services/generateHash.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HashManager = void 0;
const bcryptjs_1 = require("bcryptjs");
class HashManager {
constructor() {
this.createHash = (plainText) => {
const cost = 12;
const salt = (0, bcryptjs_1.genSaltSync)(cost);
const cypherText = (0, bcryptjs_1.hashSync)(plainText, salt);
return cypherText;
};
this.compareHash = (plainText, cypherText) => {
return (0, bcryptjs_1.compareSync)(plainText, cypherText);
};
}
}
exports.HashManager = HashManager;
33 changes: 33 additions & 0 deletions modulo5/criptografia-e-user-roles/src/services/getData.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getData = void 0;
const jwt = __importStar(require("jsonwebtoken"));
const getData = (token) => {
const payload = jwt.verify(token, process.env.JWT_KEY);
const result = { id: payload.id, role: payload.role };
return result;
};
exports.getData = getData;
8 changes: 8 additions & 0 deletions modulo5/criptografia-e-user-roles/src/services/idGenerator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.genereteId = void 0;
const uuid_1 = require("uuid");
function genereteId() {
return (0, uuid_1.v4)();
}
exports.genereteId = genereteId;
Loading