formation před 3 roky
rodič
revize
9846c0ec0b

+ 2 - 0
angular-client/src/app/components/login/login.component.ts

@@ -89,4 +89,6 @@ export class LoginComponent implements OnInit {
     
   }
 
+ 
+
 }

+ 4 - 3
angular-client/src/app/components/register/register.component.html

@@ -6,15 +6,16 @@
         <mat-card-content>
           <form [formGroup]="formGroup" (ngSubmit)="signUp()">
             <mat-progress-bar class="row " *ngIf="loading" mode="indeterminate"></mat-progress-bar>
-            <h1 class="row justify-content-center"><b>Inscription</b></h1>
-  
             <div class="row justify-content-center ">
-              <button mat-raised-button class="col-10 col-lg-5 mr-lg-2 mb-2 googlelogin" style="background-color: #DB4437; color: white;">
+              <button (click)="signGoogle()" mat-raised-button class="col-10 col-lg-5 mr-lg-2 mb-2 googlelogin" style="background-color: #DB4437; color: white;">
                 <div class="row mt-1 ml-3">
                   <mat-icon class="ml-2" svgIcon="googleLogo"></mat-icon>
                   <p class="ml-2 marginButton">Se connecter avec Google</p>
                 </div>
               </button>
+            <h1 class="row justify-content-center"><b>Inscription</b></h1>
+  
+           
             
               <button mat-raised-button class="col-10 col-lg-5 ml-lg-2 mb-2 facebooklogin" style="background-color: #3b5998; color: white;">
                 <div class="row mt-1 ml-3">

+ 12 - 1
angular-client/src/app/components/register/register.component.ts

@@ -130,7 +130,18 @@ export class RegisterComponent implements OnInit {
   //     duration: 5000,
   //   });
   // }
-  
+   //google signIn
+   signGoogle(){
+    window.location.href =`http://localhost:4000/api/auth/google`
+    // this.authService.signGoogle().subscribe(
+    //   data=> {
+    //       console.log(data); 
+    //       this.router.navigate(['/auth']);
+    // },
+    //   error=> {
+    //       console.log(error);
+    // });
+  }
 
 
    signUp(){

+ 1 - 1
angular-client/src/app/components/shared/footer/footer.component.html

@@ -9,7 +9,7 @@
           
           <div class="col-12 mb-2 ">
             <a routerLink="/" routerLinkActive="active" class="row justify-content-center" >
-              <img  width="80" height="80" src="assets/img/logo-fatboar.png">
+              <img  width="80" height="80" src="assets/img/fatboar.png">
             </a>
           </div>
 

+ 1 - 1
angular-client/src/app/components/shared/navbar/navbar.component.html

@@ -8,7 +8,7 @@
     </div>
     
     <a  routerLink="/" class="">
-    <span><img  src="assets/img/logo-fatboar.png"  width="50" height="50" class="logo-fatboar"  alt="fatboar"></span>  
+    <span><img  src="assets/img/fatboar.png"  width="50" height="50" class="logo-fatboar"  alt="fatboar"></span>  
       
     </a> 
     <span class="example-spacer"></span>

+ 12 - 0
angular-client/src/app/services/auth.service.ts

@@ -66,6 +66,18 @@ export class AuthService {
         return token;
       }));
   }
+   // login google
+    // signGoogle(): Observable<User> {
+    //   //debugger;
+    // console.log("url ========",this.apiUrl);
+    //   return this.http.get<User>(`${this.apiUrl}/api/auth/google`)
+    //   .pipe(map(user => {
+    //     // store jwt token in local storage 
+    //     localStorage.setItem('token', JSON.stringify(user));
+    //     console.log("test",user);
+    //     return user;
+    //   }));
+    // }  
     // login get  token on login admin
     signInAdmin(credentials): Observable<Token> {
        //debugger;

+ 16 - 9
express-server/index.js

@@ -1,14 +1,18 @@
 const express = require('express');
 const bodyparser = require('body-parser');
+const passport = require('passport');
 const mongoose = require('mongoose');
-// const cors = require('cors');
+const cors = require('cors');
 // const config = require('./config/db.config');
+
+
 const userRoutes = require('./routes/user');
 const employeeRoutes = require('./routes/employee');
 const authRoutes = require('./routes/auth');
+const oauthRoutes = require('./routes/oauth');
 const ticketRoutes = require('./routes/ticket');
 const emailsRoutes = require('./routes/emailing');
-const authGoogle = require('./routes/google');
+//const authGoogle = require('./routes/google');
 const authFacebook = require('./routes/facebook');
 const tirageRoutes = require('./routes/tirage');
 const contactRoutes = require('./routes/contact');
@@ -33,15 +37,16 @@ app.use(metricsMiddleware);
 
 //metrics
 app.use(makeApiMiddleware()); 
+app.use(cors());
 
 app.get("/api", (req, res) => {
     res.status(200).send("Api Works.");
   });
 
-// var corsOptions = {
-//     origin: 'http://example.com',
-//     optionsSuccessStatus: 200 
-//   }
+  // var corsOptions = {
+  //   origin: 'https://localhost:4200',
+  //   optionsSuccessStatus: 200 
+  // }
 
 //Définition des CORS Middleware 
 app.use(function(req, res, next) {
@@ -61,19 +66,21 @@ app.use(function(req, res, next) {
   });
 
 
-
 // parse requests  body params
 app.use(bodyparser.json());
 app.use(bodyparser.urlencoded({extended: true}));
+app.use(passport.initialize());
 
 //simple route
 app.use('/api/users', userRoutes );
 app.use('/api/employees', employeeRoutes );
 app.use('/api/tickets', ticketRoutes );
 app.use('/api/auth',  authRoutes );
+app.use('/api/auth', oauthRoutes );
+//app.use('/api/auth',  authGoogle );
 app.use('/api/emails',  emailsRoutes );
-app.use('/api/auth/google',  authGoogle );
-app.use('/api/auth/facebook',  authFacebook );
+//app.use('/api/auth/google',  authGoogle );
+//app.use('/api/auth/facebook',  authFacebook );
 app.use('/api/tirage',  tirageRoutes );
 app.use('/api/contact',  contactRoutes );
 app.use('/api/restaurants',  restaurantRoutes );

+ 11 - 6
express-server/package-lock.json

@@ -770,6 +770,11 @@
         "is-obj": "^2.0.0"
       }
     },
+    "dotenv": {
+      "version": "16.0.1",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
+      "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
+    },
     "duplexer3": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
@@ -1123,7 +1128,7 @@
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
     },
     "has-unicode": {
       "version": "2.0.1",
@@ -1214,7 +1219,7 @@
     "ignore-by-default": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
-      "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk="
+      "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
     },
     "import-lazy": {
       "version": "2.1.0",
@@ -1279,7 +1284,7 @@
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
     },
     "is-fullwidth-code-point": {
       "version": "1.0.0",
@@ -2020,7 +2025,7 @@
     "pause": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
-      "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+      "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
     },
     "picomatch": {
       "version": "2.3.0",
@@ -2434,7 +2439,7 @@
     "sparse-bitfield": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
-      "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
+      "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
       "optional": true,
       "requires": {
         "memory-pager": "^1.0.2"
@@ -2544,7 +2549,7 @@
         "nopt": {
           "version": "1.0.10",
           "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-          "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+          "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
           "requires": {
             "abbrev": "1"
           }

+ 1 - 0
express-server/package.json

@@ -19,6 +19,7 @@
     "body-parser": "^1.19.0",
     "cors": "^2.8.5",
     "dayjs": "^1.8.29",
+    "dotenv": "^16.0.1",
     "express": "^4.17.1",
     "express-prom-bundle": "^6.1.0",
     "express-rate-limit": "^5.1.3",

+ 30 - 30
express-server/routes/facebook.js

@@ -1,38 +1,38 @@
-const express = require('express');
-const router = express.Router();
-const { Email } = require('../models/email.model');
-const { User } = require('../models/user.model');
-const nodemailer = require('nodemailer');
+// const express = require('express');
+// const router = express.Router();
+// const { Email } = require('../models/email.model');
+// const { User } = require('../models/user.model');
+// const nodemailer = require('nodemailer');
 
-const passport = require('passport');
-const  FacebookStrategy  = require('passport-facebook').Strategy;
+// const passport = require('passport');
+// const  FacebookStrategy  = require('passport-facebook').Strategy;
 
-passport.use(new FacebookStrategy({
-    clientID: "318954999682335",
-    clientSecret: "9f8d5261decefbaf556f4c42539ee358",
-    callbackURL: "http://localhost:4000/api/auth/facebook/callback",
-    enableProof: false
-  },
+// passport.use(new FacebookStrategy({
+//     clientID: "318954999682335",
+//     clientSecret: "9f8d5261decefbaf556f4c42539ee358",
+//     callbackURL: "http://localhost:4000/api/auth/facebook/callback",
+//     enableProof: false
+//   },
  
-  (accessToken, refreshToken, profile, done) => {
-   try{
-    console.log('acces token ',accessToken);
-    console.log('refresh token ',refreshToken);
-    console.log('profile ',profile);
-    console.log('done ',done);
-}  catch(error){
-   console.log(error)
-}
+//   (accessToken, refreshToken, profile, done) => {
+//    try{
+//     console.log('acces token ',accessToken);
+//     console.log('refresh token ',refreshToken);
+//     console.log('profile ',profile);
+//     console.log('done ',done);
+// }  catch(error){
+//    console.log(error)
+// }
     
-  }
-));
+//   }
+// ));
 
 
-router.get('/', passport.authenticate('facebook' ) );
-router.get('/callback',  passport.authenticate('facebook',
- { successRedirect: '/profile',
-  failureRedirect: '/'}
-  ));
+// router.get('/', passport.authenticate('facebook' ) );
+// router.get('/callback',  passport.authenticate('facebook',
+//  { successRedirect: '/profile',
+//   failureRedirect: '/'}
+//   ));
 
 
-module.exports = router; 
+// module.exports = router; 

+ 108 - 120
express-server/routes/google.js

@@ -1,77 +1,79 @@
-const express = require('express');
-const router = express.Router();
-const { Email } = require('../models/email.model');
-const { User } = require('../models/user.model');
-const nodemailer = require('nodemailer');
+// const express = require('express');
+// const router = express.Router();
+// const jwt = require("jsonwebtoken");
+// const { Email } = require('../models/email.model');
+// const { User } = require('../models/user.model');
+// const nodemailer = require('nodemailer');
+// const role = require('../lib/role');
+// require('dotenv').config();
 
-const passport = require('passport');
-const GoogleStrategy = require('passport-google-oauth20').Strategy;
+// const passport = require('passport');
+// const GoogleStrategy = require('passport-google-oauth20').Strategy;
 
-router.use(passport.initialize());
-// router.use(passport.session());
+// router.use(passport.initialize());
+// //router.use(passport.session());
 
 
-passport.serializeUser(function (user, done) {
-  done(null, user);
-});
+// passport.serializeUser((user, cb) => {
+//   cb(null, user);
+// });
 
 
-passport.deserializeUser(function (user, done) {
-  done(null, user);
-});
+// passport.deserializeUser((obj, cb) => {
+//   cb(null, obj);
+// });
 
 
-// passport.use(new GoogleStrategy({
-//     clientID: "931209872114-5glro42kjofspf239h7n7tq21f6ntgqq.apps.googleusercontent.com",
-//     clientSecret: "sBiZm-fvgtCVVF3db7naVEwn",
-//     callbackURL: "http://localhost:4000/api/auth/google/callback"
-//   },
-
-//      async  (accessToken, refreshToken, profile, done) => {
+// // passport.use(new GoogleStrategy({
+// //     clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
+// //     clientSecret: "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",
+// //     callbackURL: "http://localhost:4000/api/auth/google/callback"
+// //   },
 
+// //      async  (accessToken, refreshToken, profile, done) => {
 
-//       console.log(profile.emails[0].value)
 
-//        return done(null, profile);
+// //       console.log(profile.emails[0].value)
 
-//  var email = profile.emails[0].value
-// const user =  await User.findOne({email: email})
+// //        return done(null, profile);
 
+// //  var email = profile.emails[0].value
+// //  const user =  await User.findOne({email: email})
 
-// if (user) {
-//   console.log(user)
-//   user.username = accessToken;
 
+// // if (user) {
+// //   console.log(user)
+// //   user.username = accessToken;
 
-//   user.save().then(()=>{
-//     return done(null, user);
-//   })
-// }else{
 
-// console.log('creation of user')
-// make a new record
-// let user = await new User({
-//   googleId: profile.id,
-//   email: profile.emails[0].value,
-//   accessToken : accessToken,
-//   refreshToken : refreshToken
-// }).save()
-// done(null, user);
-// }
+// //   user.save().then(()=>{
+// //     return done(null, user);
+// //   })
+// // }else{
 
+// // console.log('creation of user')
+// // //make a new record
+// // let user = await new User({
+// //   googleId: profile.id,
+// //   email: profile.emails[0].value,
+// //   accessToken : accessToken,
+// //   refreshToken : refreshToken
+// // }).save()
+// // done(null, user);
+// // }
 
 
 
 
-// console.log('acces token ',accessToken);
-// console.log('refresh token ',refreshToken);
-//  console.log('prfile ',profile.emails[0].value);
-// console.log('done ',done);
 
+// // console.log('acces token ',accessToken);
+// // console.log('refresh token ',refreshToken);
+// //  console.log('prfile ',profile.emails[0].value);
+// // console.log('done ',done);
 
-//   }
-// ));
 
+// //   }
+// // ));
 
 
 
@@ -81,92 +83,78 @@ passport.deserializeUser(function (user, done) {
 
 
 
-passport.use(new GoogleStrategy({
-  clientID: "931209872114-5glro42kjofspf239h7n7tq21f6ntgqq.apps.googleusercontent.com",
-  clientSecret: "sBiZm-fvgtCVVF3db7naVEwn",
-  callbackURL: "http://localhost:4000/api/auth/google/callback"
-},
-  function (request, accessToken, refreshToken, profile, done) {
 
-    
-    User.findOne({ email: profile.emails[0].value })
-      .then(
-        (user) => {
-          if (user) {
-            //if we already have a record with the given profile ID
-            done(null, user);
-            console.log('profile', user)
-            
-          } else {
-            //if not, create a new user 
-            // new User({
-            //   googleId: profile.id,
-            // }).save().then((newUser) => {
-            //   done(null, newUser)
-            // }
-            // )
-            console.log('done')
-            done(null, newUser)
-          }
-        }
-      )
-      .catch()
-    // User.findOne({ email: profile.emails[0].value }, function(err, user) {
-    //   if(err) {
-    //     console.log(err);  // handle errors!
-    //   }
-    //   if (!err && user !== null) {
-    //     console.log(user)
-    //     done(null, user);
-    //   } else {
-    //     console.log('fqsdffqef')
-    // user = new User({
-    //   oauthID: profile.id,
-    //   name: profile.displayName,
-    //   created: Date.now()
-    // });
-    // user.save(function(err) {
-    //   if(err) {
-    //     console.log(err);  // handle errors!
-    //   } else {
-    //     console.log("saving user ...");
-    //     done(null, user);
-    //   }
-    // });
-    //   }
-    // });
-  }
-));
+// passport.use(new GoogleStrategy({
+//   clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
+//   clientSecret: "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",
+//   callbackURL: "http://localhost:4000/api/auth/google/callback"
+// },
+// async (req, accessToken, refreshToken, profile, cb) => {
+
+//     User.findOne({ email: profile.emails[0].value }, (err, user) => {
+//       if (err) {
+//         cb(err); // handle errors!
+//       }
+//       if (!err && user !== null) {
+//         cb(err, user);
+//       }
+//       else {
+
+//         user = new User({
+//           googleId: profile.id,
+//           email: profile.emails[0].value,
+//           firstname: profile.name.givenName,
+//           lastname: profile.name.familyName,
+//           role: role.Client,
+//           isActive: true,
+//           isGain: false,
+//         });
+
+//         user.save((err) => {
+//           if (err) {
+//             cb(err); // handle errors!
+//           } else {
+//             cb(null, user);
+//           }
+//         });
+//       }
+//     });
+//   }
+// ));
 
 
 
 
 
-router.get('/', passport.authenticate('google', { session: false, scope: ['profile', 'email'] }));
+// router.get('/', passport.authenticate('google', { session: false, scope: ['profile', 'email'] }), 
+// async () => {
+//   console.log('je suis dans mon get root')
+// });
 
-// router.get('/callback', passport.authenticate('google') )
+// // router.get('/callback', passport.authenticate('google') )
 
 
 
-router.get('/callback',  passport.authenticate('google', { failureRedirect: '/failed' }),
-  function (req, res) {
-    // res.redirect('/good')
-    // console.log("success");
-    // // Successful authentication, redirect home.
-     res.status(200).json('ds');
-  });
+// router.get('/callback',  passport.authenticate('google', { failureRedirect: '/failed' }),
+//   async (req, res) => {
+//       console.log('je susi dans ma fonction callback ', req.user)
+//       const token = jwt.sign({ userId: req.user._id, email: req.user.email, role: req.user.role }, process.env.SECRET_KEY, { expiresIn: '10 h' })
+//        //res.status(200).json({ success: true, token, expireIn: `${new Date().getTime() + 120000}` })
+//       console.log(token) 
+//       res.redirect(`${process.env.URL}/auth/?token=${token}`);
+//     });
 
 
-//failed auth google 
-router.get('/failed', async (req, res) => { res.status(404).send('erreur authentification') })
+// //failed auth google 
+// router.get('/failed', async (req, res) => { res.status(404).send('erreur authentification') })
 
 
 
-//get all users
-router.get('/good', async (req, res) => {
+// //get all users
+// router.get('/good', async (req, res) => {
 
-  res.status(200).send('welcome mr ');
-})
+//   res.status(200).send('welcome mr ');
+// })
 
 
 
@@ -174,4 +162,4 @@ router.get('/good', async (req, res) => {
 
 
 
-module.exports = router; 
+// module.exports = router;