diff --git a/Himanshu_Kumar/.gitignore b/Himanshu_Kumar/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/Himanshu_Kumar/NodeJWT/database/config.js b/Himanshu_Kumar/NodeJWT/database/config.js
new file mode 100644
index 0000000..9a3ec82
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/database/config.js
@@ -0,0 +1,14 @@
+const mongoose=require('mongoose');
+
+const url="mongodb://localhost:27017/nodeJWT"
+
+
+mongoose.Promise=global.Promise;
+
+mongoose.connect(url,{useNewUrlParser:true,keepAlive:1}).then((res)=>{
+ console.log("Established connection with database");
+ //console.log(res);
+}).catch(error=>{
+ console.log(error.message);
+})
+module.exports=mongoose;
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/index.js b/Himanshu_Kumar/NodeJWT/index.js
new file mode 100644
index 0000000..6a9d9d8
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/index.js
@@ -0,0 +1,73 @@
+const express=require('express');
+const jwt=require('jsonwebtoken');
+const app=express();
+const User = require('./schema/users');
+
+app.use(express.json());
+
+app.get('/',(req,res) => {
+ res.json({
+ message: "welcome to this world"
+ });
+});
+
+app.get('/api/users', async(req, res) => {
+ try{
+ let users = await User.find({});
+ // users = JSON.stringify(users);
+ // users = JSON.parse(users);
+ console.log(users);
+ res.send(users);
+ }catch(err){
+ console.log(err);
+ }
+});
+
+
+app.post('/posts',verifyToken,(req,res) => { //protected route
+ jwt.verify(req.token,'secretkey',(err,authData)=>{
+ if(err){
+ res.sendStatus(403);
+ }
+ else{
+ res.json({
+ message: "Post method",
+ authData
+ });
+ }
+ })
+});
+
+
+app.post('/signin',async(req,res) => {
+ let user = await User.findOne({email: req.body.email,pass: req.body.pass });
+ console.log(user);
+ if(!user){
+ return res.status(400).send('User with given email, password isn\'t matching');
+ }
+ else{
+ const token = jwt.sign({user}, 'secretkey');
+ res.json({
+ token
+ }); }
+
+});
+
+function verifyToken(req, res, next){
+ const bearerHeader=req.headers['authorization'];
+ console.log("bearereHeader",bearerHeader);
+ if(typeof bearerHeader!=='undefined'){
+ const bearer=bearerHeader.split(' ');
+ const bearerToken=bearer[1];
+ req.token=bearerToken;
+ next();
+ }
+ else{
+ res.sendStatus(403);
+ }
+
+}
+
+app.listen(5050, ()=>{
+ console.log("Server started on port 5050")
+})
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/package-lock.json b/Himanshu_Kumar/NodeJWT/package-lock.json
new file mode 100644
index 0000000..46f9bd1
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/package-lock.json
@@ -0,0 +1,606 @@
+{
+ "name": "nodeauth",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
+ },
+ "body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "requires": {
+ "bytes": "3.1.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
+ }
+ },
+ "bson": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.3.tgz",
+ "integrity": "sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg=="
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ },
+ "content-disposition": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "cookie": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "express": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+ "requires": {
+ "accepts": "~1.3.7",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.19.0",
+ "content-disposition": "0.5.3",
+ "content-type": "~1.0.4",
+ "cookie": "0.4.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.1.2",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.5",
+ "qs": "6.7.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.1.2",
+ "send": "0.17.1",
+ "serve-static": "1.14.1",
+ "setprototypeof": "1.1.1",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ipaddr.js": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
+ "requires": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "requires": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "kareem": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
+ "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
+ },
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
+ "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
+ },
+ "mime-types": {
+ "version": "2.1.26",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
+ "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+ "requires": {
+ "mime-db": "1.43.0"
+ }
+ },
+ "mongodb": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.4.1.tgz",
+ "integrity": "sha512-juqt5/Z42J4DcE7tG7UdVaTKmUC6zinF4yioPfpeOSNBieWSK6qCY+0tfGQcHLKrauWPDdMZVROHJOa8q2pWsA==",
+ "requires": {
+ "bson": "^1.1.1",
+ "require_optional": "^1.0.1",
+ "safe-buffer": "^5.1.2",
+ "saslprep": "^1.0.0"
+ }
+ },
+ "mongoose": {
+ "version": "5.8.11",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.11.tgz",
+ "integrity": "sha512-Yz0leNEJsAtNtMTxTDEadacLWt58gaVeBVL3c1Z3vaBoc159aJqlf+T8jaL9mAdBxKndF5YWhh6Q719xac7cjA==",
+ "requires": {
+ "bson": "~1.1.1",
+ "kareem": "2.3.1",
+ "mongodb": "3.4.1",
+ "mongoose-legacy-pluralize": "1.0.2",
+ "mpath": "0.6.0",
+ "mquery": "3.2.2",
+ "ms": "2.1.2",
+ "regexp-clone": "1.0.0",
+ "safe-buffer": "5.1.2",
+ "sift": "7.0.1",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "mongoose-legacy-pluralize": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
+ "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
+ },
+ "mpath": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz",
+ "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw=="
+ },
+ "mquery": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz",
+ "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "debug": "3.1.0",
+ "regexp-clone": "^1.0.0",
+ "safe-buffer": "5.1.2",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "proxy-addr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+ "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.9.0"
+ }
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "raw-body": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "requires": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "regexp-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
+ "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
+ },
+ "require_optional": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
+ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
+ "requires": {
+ "resolve-from": "^2.0.0",
+ "semver": "^5.1.0"
+ }
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "requires": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "sift": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
+ "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
+ },
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
+ "optional": true,
+ "requires": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ }
+ }
+}
diff --git a/Himanshu_Kumar/NodeJWT/package.json b/Himanshu_Kumar/NodeJWT/package.json
new file mode 100644
index 0000000..0ba4be4
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "nodeauth",
+ "version": "1.0.0",
+ "description": "JWT node",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "start": "nodemon.js"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.17.1",
+ "jsonwebtoken": "^8.5.1",
+ "mongoose": "^5.8.11"
+ }
+}
diff --git a/Himanshu_Kumar/NodeJWT/schema/users.js b/Himanshu_Kumar/NodeJWT/schema/users.js
new file mode 100644
index 0000000..e71188b
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/schema/users.js
@@ -0,0 +1,19 @@
+const mongoose = require('../database/config');
+
+const UserSchema = new mongoose.Schema({
+ name: {
+ type: String,
+ required: true
+ },
+ email: {
+ type: String,
+ required: true
+ },
+ pass: {
+ type: String,
+ required: true
+ }
+});
+
+const User = mongoose.model("t3", UserSchema);
+module.exports = User;
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/css/css.css b/Himanshu_Kumar/NodeJWT/views/assets/css/css.css
new file mode 100644
index 0000000..5eb479b
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/css/css.css
@@ -0,0 +1,44 @@
+
+body{
+ background-image: url(../images/Backgrounds.jpg);
+
+}
+.navbar div a{
+ color: white;
+}
+.navbar-brand{
+ font-size: 25px;
+ font-family:Comic Sans MS;
+}
+.row{
+ margin-top: 5%;
+}
+.panel{
+ border: 0px; border-radius: 5%;
+}
+.panel-heading{
+ font-size: 2rem;
+ font-family:Comic Sans MS;
+ text-align: center;
+
+}
+
+.form-horizontal{
+ margin-bottom: 20px;
+}
+.btn{
+ margin-left: 45%; margin-bottom: 10px;
+}
+.logo-img{
+ width: 10%; height: 10%; margin-left: 45%; margin-bottom: 5%;
+}
+
+.table{
+ border: 1px solid #6AAD4A;
+}
+.table thead tr th{
+ border: 1px solid #6AAD4A;
+}
+.table tbody tr td{
+ border: 1px solid #6AAD4A;
+}
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/html/AdminLogin.html b/Himanshu_Kumar/NodeJWT/views/assets/html/AdminLogin.html
new file mode 100644
index 0000000..1ba8e1a
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/html/AdminLogin.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ Admin Login Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CyberGroup
+
Admin Login
+
+
+

+
+
+
+
+
+
+
+
+
+
+
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/html/login.html b/Himanshu_Kumar/NodeJWT/views/assets/html/login.html
new file mode 100644
index 0000000..bb12d57
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/html/login.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ User Login Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CyberGroup
+
User Login
+
+
+

+
+
+
+
+
+
+
+
+
+
+
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/html/uesrList.html b/Himanshu_Kumar/NodeJWT/views/assets/html/uesrList.html
new file mode 100644
index 0000000..cc10ba9
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/html/uesrList.html
@@ -0,0 +1,70 @@
+
+
+
+ List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CyberGroup
+

+
+
+
+
+
+
+
ADMIN
+
+
+
+
+
+
+
+
+
+
+
+ | Name |
+ Gender |
+ Age |
+ Email |
+ Job Role |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/images/Backgrounds.jpg b/Himanshu_Kumar/NodeJWT/views/assets/images/Backgrounds.jpg
new file mode 100644
index 0000000..d34f89e
Binary files /dev/null and b/Himanshu_Kumar/NodeJWT/views/assets/images/Backgrounds.jpg differ
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/js/index.js b/Himanshu_Kumar/NodeJWT/views/assets/js/index.js
new file mode 100644
index 0000000..4920bbf
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/js/index.js
@@ -0,0 +1,119 @@
+//var formdata=[{Name:"Himanshu Kumar", Email:"acb@xyz.com",Gender:"Male",Age:10,Designation:"Admin",Password:"rdfgfdcg"}]
+var signup=document.getElementById("signUpBtn");
+var logLink=document.getElementById("toLogin");
+
+
+const getUserData = () => {
+ var name = document.getElementById("nameId").value;
+ var mail = document.getElementById("mailId").value;
+ var pwd = document.getElementById("passId").value;
+ var age = document.getElementById("ageId").value;
+
+ console.log(pwd);
+
+ var userData = {
+ "Namee": name,
+ "Gender":"male",
+ "Age":age,
+ "Email":mail,
+ "Pass": pwd,
+ "Jobrole":"User"
+
+
+ };
+ // console.log(JSON.stringify(json));
+ sendData(userData);
+}
+
+const sendData = (userInfo) => {
+
+ sendHTTPReq('POST', "http://localhost:51543/api/Signup", userInfo)
+ .then(responseData => {
+ console.log(responseData);
+ if(responseData == 200){
+ document.getElementById("sgnUp").style.display = "none";
+ document.getElementById("lgn").style.display = "flex";
+ }
+ else{
+ window.alert(responseData);
+ }
+ })
+ .catch(err => {
+ console.log(err);
+ });
+}
+
+
+
+
+
+
+const sendHTTPReq = (method, url, data) => {
+ const promise = new Promise((resolve, reject) => {
+ const xhr = new XMLHttpRequest();
+ xhr.open(method, url);
+ console.log(JSON.stringify(data));
+ xhr.responseType = 'json';
+ if(data){
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ }
+
+ xhr.onload = () => {
+ //resolve(xhr.status + "--Token--"+xhr.response.token);
+ resolve(xhr);
+ };
+ xhr.onerror = () => {
+ reject('Something went wrong');
+ }
+ xhr.send(JSON.stringify(data));
+ });
+ return promise;
+}
+
+
+function saveInLocalStorage(ResToken){
+ if (typeof(Storage) !== "undefined") {
+ // Code for localStorage/sessionStorage.
+ localStorage.setItem("JwtTOKEN", ResToken);
+ console.log("Token successfully stored");
+ } else {
+
+ alert("Not supporting.");
+ }
+}
+
+signup.addEventListener('click', getUserData);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// function register(){
+// var formadata2=readfromData();
+// formdata.push(formdata2);
+// generateHttpPost(formdata);
+// login();
+// window.location.href="login.html";
+// }
+
+// function readfromData(){
+// var formdata_new={};
+// formdata_new["Name"]=document.getElementById("name-id").value;
+// formdata_new["Email"]=document.getElementById("email-id").value;
+// formdata_new["Age"]=document.getElementById("age-id").value;
+// formdata_new["Password"]=document.getElementById("pass-id").value;
+// }
+
+// function register() {
+// var input = document.getElementById("userInput").value;
+// alert(input);
+// }
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/js/login.js b/Himanshu_Kumar/NodeJWT/views/assets/js/login.js
new file mode 100644
index 0000000..1757bf6
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/js/login.js
@@ -0,0 +1,112 @@
+var login=document.getElementById("loginBtn");
+var regLink=document.getElementById("toReg");
+
+const getLoginData = () => {
+ var mail = document.getElementById("email").value;
+ var pwd = document.getElementById("pass").value;
+ console.log(pwd);
+ var usrInfo = {
+ "Email": mail,
+ "Pass": pwd
+ };
+ logMeIn(usrInfo);
+}
+
+
+const logMeIn = (lgndata) => {
+ sendHTTPReq('POST', "http://localhost:51543/api/Login", lgndata)
+ .then(responseData => {
+ if(responseData.status == 200){
+ saveInLocalStorage(responseData.response.token);
+ var x = jsonDecoder(responseData.response.token);
+ if(x.Jobrole == "ADMIN")
+ window.location.href = "../html/userList.html";
+ else if(x.Jobrole == "EMPLOYEE")
+ window.location.href = "#";
+ else
+ window.location.href = "#";
+ }
+ else if(responseData.status == 401){
+ window.alert("Unauthorized");
+ }
+ else{
+ window.alert(responseData.status);
+ // window.location.href = "./error.html";
+ // document.getElementById("errorMessage").value = " "+xhr.status;
+ }
+ console.log(responseData.status);
+ })
+ .catch(err => {
+ console.log(err);
+ })
+}
+
+const jsonDecoder = (token) => {
+ var base64Url = token.split('.')[1];
+ var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
+ var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+ }).join(''));
+ return JSON.parse(jsonPayload);
+};
+
+
+window.onload = () => {
+ if (typeof(Storage) !== "undefined") {
+ // Code for localStorage/sessionStorage.
+ const token = localStorage.getItem("JwtTOKEN");
+ if(token != null){
+ var jsonPayload = jsonDecoder(token);
+ if(jsonPayload.Jobrole == "ADMIN")
+ window.location.href = "../html/userList.html";
+ else if(jsonPayload.Jobrole == "User")
+ window.location.href = "#";
+ else
+ window.location.href = "#";
+ }
+ else{
+ console.log("JwtToken not present");
+ }
+ } else {
+
+ alert("Unsupportive browser");
+ }
+}
+
+const sendHTTPReq = (method, url, data) => {
+ const promise = new Promise((resolve, reject) => {
+ const xhr = new XMLHttpRequest();
+ xhr.open(method, url);
+ console.log(typeof(JSON.stringify(data)));
+ xhr.responseType = 'json';
+ if(data){
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ }
+
+ xhr.onload = () => {
+ //resolve(xhr.status + "--Token--"+xhr.response.token);
+ resolve(xhr);
+ };
+ xhr.onerror = () => {
+ reject('Something went wrong');
+ };
+ console.log(data);
+ xhr.send(JSON.stringify(data));
+ });
+ return promise;
+}
+
+function saveInLocalStorage(ResToken){
+ if (typeof(Storage) !== "undefined") {
+ // Code for localStorage/sessionStorage.
+ localStorage.setItem("JwtTOKEN", ResToken);
+ console.log("Token successfully stored");
+ } else {
+
+ alert("Not supporting.");
+ }
+}
+
+
+login.addEventListener('click', getLoginData);
+//regLink.addEventListener('click', s);
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/assets/js/tablePage.js b/Himanshu_Kumar/NodeJWT/views/assets/js/tablePage.js
new file mode 100644
index 0000000..858ad54
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/assets/js/tablePage.js
@@ -0,0 +1,146 @@
+var lgOutBtn = document.getElementById("lgOut");
+var allBtn = document.getElementById("allEmp");
+var json = [
+ {
+ "Name": "hgfsd jhashjsd",
+ "Gender": "M",
+ "Age": 10,
+ "Email":null,
+ "JobRole": "Employee"
+ },
+ {
+ "Name": "hgfsd jhashjsd",
+ "Gender": "F",
+ "Age": 13,
+ "Email":null,
+ "JobRole": "Employee"
+ }
+];
+var table = document.getElementById("adminTable");
+
+const giveInputElement = (edit, data) => {
+ var temp = document.createElement("input");
+ temp.type = 'text';
+ temp.value = data;
+ temp.readOnly = false;
+ temp.style.width = "100%";
+ temp.style.border = "none";
+ if(edit == true){
+ temp.readOnly = true;
+ }
+ return temp;
+}
+
+function drawTable(json) {
+ for(let i=0; i {
+ var base64Url = token.split('.')[1];
+ var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
+ var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+ }).join(''));
+
+ return JSON.parse(jsonPayload);
+};
+
+window.onload = () => {
+
+ if (typeof(Storage) !== "undefined") {
+ // localStorage is pre-defined here
+ const token = localStorage.getItem("JwtTOKEN");
+
+ if(token != null){
+ var jsonPayload = jsonDecoder(token);
+ document.getElementById("userName").innerHTML = jsonPayload.Namee;
+ getAll();
+ drawTable();
+ }
+ else{
+ console.log("No JwtToken present");
+ }
+ } else {
+
+ alert("No browser support");
+ }
+}
+
+const lgout = () => {
+ if (typeof(Storage) !== "undefined") {
+ localStorage.removeItem("JwtTOKEN");
+ console.log("something's not working");
+ window.location.href = "./index.html";
+ } else {
+ alert("No Web Storage support.");
+ }
+}
+
+const sendHTTPReq = (method, url, data) => {
+ const promise = new Promise((resolve, reject) => {
+ const xhr = new XMLHttpRequest();
+ xhr.open(method, url);
+ console.log(JSON.stringify(data));
+ xhr.responseType = 'json';
+ if(data){
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ }
+
+ xhr.onload = () => {
+ resolve(xhr);
+ };
+ xhr.onerror = () => {
+ reject('Something went wrong');
+ }
+ xhr.send(JSON.stringify(data));
+ });
+ return promise;
+}
+
+
+const getAll = () => {
+ sendHTTPReq('GET', "https://localhost:51543/api/Admin")
+ .then((responseData) => {
+ json=responseData.response;
+ drawTable(json)
+ })
+ .catch(err => {
+ console.log(err);
+ });
+};
+
+allBtn.addEventListener('click', getAll);
+lgOutBtn.addEventListener('click', lgout);
\ No newline at end of file
diff --git a/Himanshu_Kumar/NodeJWT/views/index.html b/Himanshu_Kumar/NodeJWT/views/index.html
new file mode 100644
index 0000000..5c47c4a
--- /dev/null
+++ b/Himanshu_Kumar/NodeJWT/views/index.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Sign UP Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CyberGroup
+
+
+

+
+
+
+
+
+
+
+
+
+
diff --git a/Himanshu_Kumar/UsersTask.sln b/Himanshu_Kumar/UsersTask.sln
new file mode 100644
index 0000000..cf999a2
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.902
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsersTask", "UsersTask\UsersTask.csproj", "{EFCF31E7-EB72-4C93-A2BF-F1295EEDE9CC}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EFCF31E7-EB72-4C93-A2BF-F1295EEDE9CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EFCF31E7-EB72-4C93-A2BF-F1295EEDE9CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EFCF31E7-EB72-4C93-A2BF-F1295EEDE9CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EFCF31E7-EB72-4C93-A2BF-F1295EEDE9CC}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {CC405E8C-2543-4A57-A149-0EFEA133B1D1}
+ EndGlobalSection
+EndGlobal
diff --git a/Himanshu_Kumar/UsersTask/Controllers/LoginController.cs b/Himanshu_Kumar/UsersTask/Controllers/LoginController.cs
new file mode 100644
index 0000000..c2dffc4
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/Controllers/LoginController.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Microsoft.IdentityModel.Tokens;
+
+namespace UsersTask.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class LoginController : ControllerBase
+ {
+ public IConfiguration _config;
+ DbOps.IDbOps _dbOps;
+ public LoginController(DbOps.IDbOps dbOps, IConfiguration config)
+ {
+ _dbOps = dbOps;
+ _config = config;
+ }
+
+ [HttpPost]
+ public IActionResult logIn([FromBody] CustomModels.customUsers customUser)
+ {
+ IActionResult response = Unauthorized();
+ var user = AuthenticateUser(customUser);
+
+ if (user != null)
+ {
+ var tokenString = GenerateJSONWebToken(user);
+ response = Ok(new { token = tokenString });
+ }
+ return response;
+ }
+
+ private string GenerateJSONWebToken(CustomModels.customUsers loginInfo)
+ {
+ var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
+ var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
+
+ var claims = new[] {
+ new Claim(JwtRegisteredClaimNames.Sub, _config["Jwt:Issuer"]),
+ new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
+ new Claim(JwtRegisteredClaimNames.Iat, DateTime.UtcNow.ToString()),
+ new Claim("Namee", loginInfo.Namee),
+ new Claim("Email", loginInfo.Email),
+ new Claim("JobRole", loginInfo.Jobrole)
+ };
+
+
+ var token = new JwtSecurityToken(_config["Jwt:Issuer"],
+ _config["Jwt:Issuer"],
+ claims,
+ expires: DateTime.Now.AddMinutes(120),
+ signingCredentials: credentials);
+
+ return new JwtSecurityTokenHandler().WriteToken(token);
+ }
+
+ private CustomModels.customUsers AuthenticateUser(CustomModels.customUsers usersDetails)
+ {
+ CustomModels.customUsers user = null;
+ user = _dbOps.checkUser(usersDetails);
+ return user;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Himanshu_Kumar/UsersTask/Controllers/SignupController.cs b/Himanshu_Kumar/UsersTask/Controllers/SignupController.cs
new file mode 100644
index 0000000..dbd3b8d
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/Controllers/SignupController.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace UsersTask.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class SignupController : ControllerBase
+ {
+ DbOps.IDbOps _dbOps;
+ public SignupController(DbOps.IDbOps dbOps)
+ {
+ _dbOps = dbOps;
+ }
+
+
+ [HttpPost]
+ public IActionResult Signup([FromBody] CustomModels.customUsers userDetails)
+ {
+ if (_dbOps.insertData(userDetails))
+ {
+ return Ok("Inserted");
+ }
+ else
+ {
+ return Ok("Some Error Occured");
+ }
+ }
+
+ [HttpPut]
+ public IActionResult tester([FromBody] CustomModels.customUsers user)
+ {
+ return Ok("Inserted");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Himanshu_Kumar/UsersTask/Controllers/UserDetails.cs b/Himanshu_Kumar/UsersTask/Controllers/UserDetails.cs
new file mode 100644
index 0000000..251bc50
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/Controllers/UserDetails.cs
@@ -0,0 +1,10 @@
+using System.Security.Claims;
+
+namespace UsersTask.Controllers
+{
+ internal class UserDetails
+ {
+ public ClaimsIdentity Jobrole { get; internal set; }
+ public ClaimsIdentity Email { get; internal set; }
+ }
+}
\ No newline at end of file
diff --git a/Himanshu_Kumar/UsersTask/Controllers/ValuesController.cs b/Himanshu_Kumar/UsersTask/Controllers/ValuesController.cs
new file mode 100644
index 0000000..d284be2
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/Controllers/ValuesController.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+
+namespace UsersTask.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class ValuesController : ControllerBase
+ {
+ // GET api/values
+ [HttpGet]
+ public ActionResult> Get()
+ {
+ return new string[] { "value1", "value2" };
+ }
+
+ // GET api/values/5
+ [HttpGet("{id}")]
+ public ActionResult Get(int id)
+ {
+ return "value";
+ }
+
+ // POST api/values
+ [HttpPost]
+ public void Post([FromBody] string value)
+ {
+ }
+
+ // PUT api/values/5
+ [HttpPut("{id}")]
+ public void Put(int id, [FromBody] string value)
+ {
+ }
+
+ // DELETE api/values/5
+ [HttpDelete("{id}")]
+ public void Delete(int id)
+ {
+ }
+ }
+}
diff --git a/Himanshu_Kumar/UsersTask/CustomModels/customUsers.cs b/Himanshu_Kumar/UsersTask/CustomModels/customUsers.cs
new file mode 100644
index 0000000..e79078b
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/CustomModels/customUsers.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace UsersTask.CustomModels
+{
+ public class customUsers
+ {
+ public int Id { get; set; }
+ public string Namee { get; set; }
+ public string Gender { get; set; }
+ public int? Age { get; set; }
+ public string Email { get; set; }
+ public string Pass { get; set; }
+ public string Jobrole { get; set; }
+ }
+}
diff --git a/Himanshu_Kumar/UsersTask/DbModels/Userdetails.cs b/Himanshu_Kumar/UsersTask/DbModels/Userdetails.cs
new file mode 100644
index 0000000..99f5080
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/DbModels/Userdetails.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+
+namespace UsersTask.DbModels
+{
+ public partial class Userdetails
+ {
+ public int Id { get; set; }
+ public string Namee { get; set; }
+ public string Gender { get; set; }
+ public int? Age { get; set; }
+ public string Email { get; set; }
+ public string Pass { get; set; }
+ public string Jobrole { get; set; }
+ }
+}
diff --git a/Himanshu_Kumar/UsersTask/DbModels/csharpTaskContext.cs b/Himanshu_Kumar/UsersTask/DbModels/csharpTaskContext.cs
new file mode 100644
index 0000000..bb8cb8d
--- /dev/null
+++ b/Himanshu_Kumar/UsersTask/DbModels/csharpTaskContext.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+
+namespace UsersTask.DbModels
+{
+ public partial class csharpTaskContext : DbContext
+ {
+ public csharpTaskContext()
+ {
+ }
+
+ public csharpTaskContext(DbContextOptions options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet Userdetails { get; set; }
+ public IEnumerable