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
2 changes: 2 additions & 0 deletions database/models/userModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ const userSchema = new Schema({
type: Boolean,
default: false,
},
accountId:String,
provider:String
});
userSchema.post("find", function (doc) {
let url = process.env.BASE_URL+"/user";
Expand Down
2 changes: 2 additions & 0 deletions dist/database/models/userModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ const userSchema = new mongoose_1.Schema({
type: Boolean,
default: false,
},
accountId: String,
provider: String
});
userSchema.post("find", function (doc) {
let url = process.env.BASE_URL + "/user";
Expand Down
15 changes: 15 additions & 0 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const dbConn_1 = require("./database/dbConn");
const bootstrab_1 = require("./src/bootstrab");
const express_session_1 = __importDefault(require("express-session"));
require("dotenv/config");
const passport_1 = __importDefault(require("passport"));
const app = (0, express_1.default)();
const port = 3000;
(0, dbConn_1.dbConn)();
app.use(express_1.default.json());
app.use('/uploads', express_1.default.static('src/uploads'));
(0, bootstrab_1.bootstrab)(app);
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
app.use((0, express_session_1.default)({
resave: false,
saveUninitialized: true,
secret: 'MohamedElassal',
}));
app.use(passport_1.default.initialize());
app.use(passport_1.default.session());
passport_1.default.serializeUser(function (user, cb) {
cb(null, user);
});
passport_1.default.deserializeUser(function (obj, cb) {
cb(null, obj);
});
5 changes: 5 additions & 0 deletions dist/src/bootstrab.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.bootstrab = void 0;
const user_routes_1 = require("./modules/user/user.routes");
const globalHandeling_1 = require("./middleware/errorHandeling/globalHandeling");
const post_routes_1 = require("./modules/post/post.routes");
const comments_routes_1 = require("./modules/comment/comments.routes");
const reply_routes_1 = require("./modules/replie/reply.routes");
const socialNetworkLogin_1 = __importDefault(require("./modules/user/socialNetworkLogin"));
const bootstrab = function (app) {
app.use('/users', user_routes_1.userRouter);
app.use('/posts', post_routes_1.postRouter);
app.use('/comments', comments_routes_1.commentRouter);
app.use('/replies', reply_routes_1.replyRouter);
app.use(socialNetworkLogin_1.default);
app.use(globalHandeling_1.globalHandeling);
};
exports.bootstrab = bootstrab;
7 changes: 6 additions & 1 deletion dist/src/middleware/validate.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
const appError_1 = require("../utils/appError");
const validate = (schema) => {
return (req, res, next) => {
let files = () => { return { [`${req.file?.fieldname}`]: req.file }; };
let files = () => {
if (!req.file)
return {};
return { [`${req.file?.fieldname}`]: req.file };
};
console.log(req.query);
const { error } = schema.validate({
...req.body,
...req.params,
Expand Down
53 changes: 53 additions & 0 deletions dist/src/modules/user/socialNetworkLogin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const passport_1 = __importDefault(require("passport"));
const userModel_1 = require("../../../database/models/userModel");
const passport_facebook_1 = __importDefault(require("passport-facebook"));
const express_1 = require("express");
const FacebookStrategy = passport_facebook_1.default.Strategy;
const facebookRouter = (0, express_1.Router)();
require("dotenv/config");
const appError_1 = require("../../utils/appError");
const catchErrors_1 = require("../../middleware/errorHandeling/catchErrors");
passport_1.default.use(new FacebookStrategy({
clientID: '894388332019012',
clientSecret: 'f3ec0038f9c5e5bff630f117bcf799c5',
callbackURL: 'http://localhost:3000/',
}, async function (profile, cb) {
const user = await userModel_1.User.findOne({
accountId: profile.id,
provider: 'facebook',
});
if (!user) {
console.log('Adding new facebook user to DB..');
const user = new userModel_1.User({
accountId: profile.id,
name: profile.displayName,
provider: profile.provider,
});
await user.save();
// console.log(user);
return cb(null, profile);
}
else {
console.log('Facebook User already exist in DB..');
// console.log(profile);
return cb(null, profile);
}
}));
facebookRouter.get('/facebook', (0, catchErrors_1.catchError)((req, res, next) => {
passport_1.default.authenticate('facebook', (err, user) => {
const userInfo = {
id: req.session.passport.user.id,
displayName: req.session.passport.user.displayName,
provider: req.session.passport.user.provider,
};
if (err)
return next(new appError_1.AppError('login failed ', 401));
res.json({ message: userInfo });
});
}));
exports.default = facebookRouter;
4 changes: 2 additions & 2 deletions dist/src/modules/user/user.validation.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const joi_1 = __importDefault(require("joi"));
const signupVal = joi_1.default.object({
name: joi_1.default.string().min(5).max(30).required(),
email: joi_1.default.string().email().required(),
passowrd: joi_1.default.string().pattern(/^[A-Z][a-zA-Z0-9]{8,40}$/).required(),
password: joi_1.default.string().required(),
rePassword: joi_1.default.valid(joi_1.default.ref('passowrd')).required(),
bio: joi_1.default.string(),
preferences: joi_1.default.string(),
Expand All @@ -26,7 +26,7 @@ const signupVal = joi_1.default.object({
exports.signupVal = signupVal;
const signInVal = joi_1.default.object({
email: joi_1.default.string().email().required(),
passowrd: joi_1.default.string().pattern(/^[A-Z][a-zA-Z0-9]{8,40}$/).required()
password: joi_1.default.string().required()
});
exports.signInVal = signInVal;
const updateProfileVal = joi_1.default.object({
Expand Down
22 changes: 21 additions & 1 deletion index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,32 @@
import express from 'express'
import { dbConn } from './database/dbConn'
import { bootstrab } from './src/bootstrab'
import fs from "fs"
import session from 'express-session'
import 'dotenv/config'
import passport from 'passport'
const app = express()
const port = 3000
dbConn()
app.use(express.json())
app.use('/uploads', express.static('src/uploads'));
bootstrab(app)
app.listen(port, () => console.log(`Example app listening on port ${port}!`))

app.use(
session({
resave: false,
saveUninitialized: true,
secret: 'MohamedElassal',
})
);

app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser(function (user, cb) {
cb(null, user);
});
passport.deserializeUser(function (obj:object, cb) {
cb(null, obj);
});

Loading