diff --git a/Abha_Rana/login_signup/assets/images/adbg.jpg b/Abha_Rana/login_signup/assets/images/adbg.jpg
new file mode 100644
index 0000000..7b23741
Binary files /dev/null and b/Abha_Rana/login_signup/assets/images/adbg.jpg differ
diff --git a/Abha_Rana/login_signup/assets/images/admin.jpg b/Abha_Rana/login_signup/assets/images/admin.jpg
new file mode 100644
index 0000000..03a6c2e
Binary files /dev/null and b/Abha_Rana/login_signup/assets/images/admin.jpg differ
diff --git a/Abha_Rana/login_signup/assets/images/bg.jpg b/Abha_Rana/login_signup/assets/images/bg.jpg
new file mode 100644
index 0000000..1dc1817
Binary files /dev/null and b/Abha_Rana/login_signup/assets/images/bg.jpg differ
diff --git a/Abha_Rana/login_signup/assets/images/cg.png b/Abha_Rana/login_signup/assets/images/cg.png
new file mode 100644
index 0000000..947fb77
Binary files /dev/null and b/Abha_Rana/login_signup/assets/images/cg.png differ
diff --git a/Abha_Rana/login_signup/html/admin.html b/Abha_Rana/login_signup/html/admin.html
new file mode 100644
index 0000000..fade89b
--- /dev/null
+++ b/Abha_Rana/login_signup/html/admin.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+ Page Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/html/index.html b/Abha_Rana/login_signup/html/index.html
new file mode 100644
index 0000000..d836b4b
--- /dev/null
+++ b/Abha_Rana/login_signup/html/index.html
@@ -0,0 +1,58 @@
+
+
+
+ Login Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/html/profile.html b/Abha_Rana/login_signup/html/profile.html
new file mode 100644
index 0000000..f298e72
--- /dev/null
+++ b/Abha_Rana/login_signup/html/profile.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Page Title
+
+
+
+
+
+
+
+
+
+ | Username |
+ Name |
+ Email |
+ Role |
+
+
+
+
+
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/html/signup.html b/Abha_Rana/login_signup/html/signup.html
new file mode 100644
index 0000000..0d57369
--- /dev/null
+++ b/Abha_Rana/login_signup/html/signup.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Page Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/scripts/adminsc.js b/Abha_Rana/login_signup/scripts/adminsc.js
new file mode 100644
index 0000000..a5367f6
--- /dev/null
+++ b/Abha_Rana/login_signup/scripts/adminsc.js
@@ -0,0 +1,172 @@
+let accesstoken=localStorage.getItem("JWTtoken");
+//document.getElementById("add__new__list").addEventListener("click", addUser);
+let data = DecodeToken(accesstoken);
+let obj = {
+ Role: data.Role,
+ Username: data.Username
+};
+
+
+function drawTable()
+{
+ var xhr = new XMLHttpRequest();
+ var url="https://localhost:44352/api/data";
+ xhr.open("GET", url,true);
+ xhr.setRequestHeader('Content-type', 'application/json');
+ xhr.send();
+ xhr.onload = function() {
+ if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
+ var userdata=JSON.parse(xhr.response);
+ console.log(userdata);
+ var table = document.getElementById("empTable");
+ 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 = () => {
+ //document.getElementById("empRole").style.display = "none";
+ if (typeof(Storage) !== "undefined") {
+ const token = localStorage.getItem("JWTtoken");
+ if(token != null){
+ var jsonPayload = jsonDecoder(token);
+ console.log(jsonPayload)
+ // document.getElementById("userName").innerHTML = jsonPayload.Username;
+ drawTable();
+ }
+ else{
+ console.log("There is no JwtToken present");
+ window.location.href = "./index.html";
+ }
+ }
+ else {
+ alert("Sorry ! Your browser is not cool.");
+ }
+}
+
+const lgout = () => {
+ if (typeof(Storage) !== "undefined") {
+ localStorage.removeItem("JwtTOKEN");
+ console.log("something is not working");
+ window.location.href = "./index.html";
+ } else {
+ // Sorry! No Web Storage support..
+ alert("Sorry ! Your browser is not cool.");
+ }
+}
+const viewdetails = () => {
+ window.location.href="profile.html";
+
+}
+const deleteuser = () => {
+ var n=window.prompt("enter name of user you want ot delete:","Name");
+ var ob={ "name":n};
+ var xhr = new XMLHttpRequest();
+ var url="https://localhost:44352/api/data";
+ xhr.open("DELETE", url,true);
+ xhr.setRequestHeader('Content-type', 'application/json');
+ xhr.send(JSON.stringify(ob));
+ xhr.onload = function() {
+ if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
+ var userdata=xhr.response;
+ console.log(userdata);
+ window.alert(userdata);
+}
+ }
+}
+const updateuser = () => {
+ var n=window.prompt("enter name :","Name");
+ var e=window.prompt("enter email :","email");
+ var a=window.prompt("enter address :","address");
+ var ob={ "Name":n,
+"Email": e,
+"Address": a};
+ var xhr = new XMLHttpRequest();
+ var url="https://localhost:44352/api/data";
+ xhr.open("PUT", url,true);
+ xhr.setRequestHeader('Content-type', 'application/json');
+ xhr.send(JSON.stringify(ob));
+ xhr.onload = function() {
+ if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
+ var userdata=xhr.response;
+ console.log(userdata);
+ window.alert(userdata);
+}
+ }
+}
+
+
+document.getElementById("logOut").addEventListener('click', lgout);
+document.getElementById("profile").addEventListener('click', viewdetails);
+document.getElementById("delete").addEventListener('click', deleteuser);
+document.getElementById("update").addEventListener('click', updateuser);
diff --git a/Abha_Rana/login_signup/scripts/profile.js b/Abha_Rana/login_signup/scripts/profile.js
new file mode 100644
index 0000000..9850020
--- /dev/null
+++ b/Abha_Rana/login_signup/scripts/profile.js
@@ -0,0 +1,91 @@
+let accesstoken=localStorage.getItem("JWTtoken");
+let data = DecodeToken(accesstoken);
+let obj = {
+ Role: data.Role,
+ Username: data.Username
+};
+$( document ).ready(function() {
+ var xhr = new XMLHttpRequest();
+ var url="https://localhost:44352/api/data/1";
+ xhr.open("GET", url,true);
+ xhr.setRequestHeader('Content-type', 'application/json');
+ xhr.send();
+ xhr.onload = function() {
+ if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
+ var userdata=JSON.parse(xhr.response);
+ console.log(userdata);
+
+ }
+ }
+ var table = document.getElementById("userdata");
+ 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);
+ };
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/scripts/script.js b/Abha_Rana/login_signup/scripts/script.js
new file mode 100644
index 0000000..2e569d3
--- /dev/null
+++ b/Abha_Rana/login_signup/scripts/script.js
@@ -0,0 +1,28 @@
+document.getElementById("btn").addEventListener("click",Postdata);
+function Postdata()
+{
+ var Username=document.getElementById("uname").value;
+ var Password=document.getElementById("pass").value;
+ var Name=document.getElementById("name").value;
+ var Email=document.getElementById("email").value;
+ var Phone=document.getElementById("num").value;
+ var Address=document.getElementById("add").value;
+ var userdata={
+ "Username":Username,
+ "Password":Password,
+ "Name":Name,
+ "Email":Email,
+ "Phone":Phone,
+ "Address":Address
+ };
+
+ console.log(userdata);
+ var xhr = new XMLHttpRequest();
+ var url="https://localhost:44352/api/signup";
+ xhr.open("POST", url,true);
+ xhr.responseType='json';
+ xhr.setRequestHeader('Content-type', 'application/json');
+ console.log(JSON.stringify(userdata));
+ xhr.send(JSON.stringify(userdata));
+
+ }
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/scripts/scriptlogin.js b/Abha_Rana/login_signup/scripts/scriptlogin.js
new file mode 100644
index 0000000..e4be6b8
--- /dev/null
+++ b/Abha_Rana/login_signup/scripts/scriptlogin.js
@@ -0,0 +1,69 @@
+document.getElementById("btn").addEventListener("click", login);
+
+function login() {
+ var Username = document.getElementById("Username").value;
+ var Password = document.getElementById("Password").value;
+ var loginObj = {
+ Username: Username,
+ Password: Password
+ };
+ console.log(loginObj);
+ const promise = new Promise((resolve, reject) => {
+ const http = new XMLHttpRequest();
+ const url = "https://localhost:44352/api/login";
+ http.open("POST", url, true);
+ http.responseType = "json";
+ if (loginObj) {
+ http.setRequestHeader("Content-Type", "application/json");
+ }
+ console.log(JSON.stringify(loginObj));
+ http.send(JSON.stringify(loginObj));
+ http.onload = function() {
+ resolve(http);
+ if (http.readyState === XMLHttpRequest.DONE && http.status === 200) {
+ console.log(http.response.token);
+ if(responseData.status == 200){
+ saveToken(responseData.response.token);
+ var payload = decodeToken(responseData.response.token);
+ if(payload.Role === "Admin")
+ window.location.href = "./admin.html";
+ else if(payload.Role === "Employee")
+ window.location.href = "./profile.html";
+ else if(payload.Role==="Project Manager")
+ window.location.href = "./profile.html";
+ }
+ else if(responseData.status == 401){
+ window.alert("Unauthorized");
+ }
+ else{
+ window.alert(responseData.status);
+ }
+ }
+ };
+ http.onerror = () => {
+ reject("Error!");
+ };
+ });
+}
+
+function saveToken(token) {
+ console.log(token);
+ if (typeof Storage !== "undefined") {
+ localStorage.setItem("JWTtoken", token);
+ } else {
+ console.log("Sorry, your browser does not support web storage...");
+ }
+}
+
+function decodeToken(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(""));
+ console.log(jsonPayload);
+ var obj = JSON.parse(jsonPayload);
+ console.log(obj.Username);
+ return JSON.parse(jsonPayload);
+}
+
diff --git a/Abha_Rana/login_signup/styles/adminstyle.css b/Abha_Rana/login_signup/styles/adminstyle.css
new file mode 100644
index 0000000..9979295
--- /dev/null
+++ b/Abha_Rana/login_signup/styles/adminstyle.css
@@ -0,0 +1,30 @@
+body{
+ background-image:url('../assets/images/adbg.jpg');
+ background-repeat:no-repeat;
+ background-size: 100%;
+}
+
+footer{
+
+margin-top: 20px;
+padding-top: 20px;
+}
+.bg__card__navbar{
+background-color: #000000;
+}
+.bg__card__footer{
+background-color: #000000 !important;
+}
+#add__new__list{
+ margin-top: 4%;
+ top: -38px;
+ right: 0;
+}
+#update
+{
+ top: -38px;
+}
+#delete
+{
+ top: -38px;
+}
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/styles/profile.css b/Abha_Rana/login_signup/styles/profile.css
new file mode 100644
index 0000000..3485485
--- /dev/null
+++ b/Abha_Rana/login_signup/styles/profile.css
@@ -0,0 +1,30 @@
+.user-row {
+ margin-bottom: 14px;
+}
+
+.user-row:last-child {
+ margin-bottom: 0;
+}
+
+.dropdown-user {
+ margin: 13px 0;
+ padding: 5px;
+ height: 100%;
+}
+
+.dropdown-user:hover {
+ cursor: pointer;
+}
+
+.table-user-information > tbody > tr {
+ border-top: 1px solid rgb(221, 221, 221);
+}
+
+.table-user-information > tbody > tr:first-child {
+ border-top: 0;
+}
+
+
+.table-user-information > tbody > tr > td {
+ border-top: 0;
+}
diff --git a/Abha_Rana/login_signup/styles/s1.css b/Abha_Rana/login_signup/styles/s1.css
new file mode 100644
index 0000000..405d24e
--- /dev/null
+++ b/Abha_Rana/login_signup/styles/s1.css
@@ -0,0 +1,59 @@
+@import url('https://fonts.googleapis.com/css?family=Numans');
+
+html,body{
+background-image: url('../assets/images/bg.jpg');
+background-size: cover;
+background-repeat: no-repeat;
+height: 100%;
+font-family: 'Numans', sans-serif;
+}
+
+.container{
+height: 100%;
+align-content: center;
+}
+
+.card{
+height: 370px;
+margin-top: auto;
+margin-bottom: auto;
+width: 400px;
+background-color: rgba(0,0,0,0.5) !important;
+}
+
+.card-header h3{
+ color: white;
+ }
+
+ .input-group-prepend span{
+ width: 50px;
+ background-color: #FFC312;
+ color: black;
+ border:0 !important;
+ }
+
+ input:focus{
+ outline: 0 0 0 0 !important;
+ box-shadow: 0 0 0 0 !important;
+
+ }
+
+.login_btn{
+ color: black;
+ background-color: #FFC312;
+ width: 100px;
+
+ }
+
+ .login_btn:hover{
+ color: black;
+ background-color: white;
+ }
+
+ .links{
+ color: white;
+ }
+
+ .links a{
+ margin-left: 4px;
+ }
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/styles/style.css b/Abha_Rana/login_signup/styles/style.css
new file mode 100644
index 0000000..e1fb2d2
--- /dev/null
+++ b/Abha_Rana/login_signup/styles/style.css
@@ -0,0 +1,4 @@
+#success_message{ display: none;}
+#btn{
+
+}
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/userjwt/userjwt.sln b/Abha_Rana/login_signup/userjwt/userjwt.sln
new file mode 100644
index 0000000..c7bad42
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt.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}") = "userjwt", "userjwt\userjwt.csproj", "{CE6929CD-757C-4F43-91F3-54F53F176932}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CE6929CD-757C-4F43-91F3-54F53F176932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CE6929CD-757C-4F43-91F3-54F53F176932}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE6929CD-757C-4F43-91F3-54F53F176932}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CE6929CD-757C-4F43-91F3-54F53F176932}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3EE242D1-9071-481F-9D24-F6B181EBEB1F}
+ EndGlobalSection
+EndGlobal
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/Controllers/loginController.cs b/Abha_Rana/login_signup/userjwt/userjwt/Controllers/loginController.cs
new file mode 100644
index 0000000..f1bdc92
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/Controllers/loginController.cs
@@ -0,0 +1,83 @@
+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.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Microsoft.IdentityModel.Tokens;
+using userjwt.CustomModels;
+using userjwt.DbModels;
+
+namespace userjwt.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class loginController : ControllerBase
+ {
+ DbModels.usersdbContext _usersdbContext;
+
+ private IConfiguration _config;
+
+ public loginController(IConfiguration config, DbModels.usersdbContext usersdbContext)
+ {
+ _config = config;
+ _usersdbContext = usersdbContext;
+ }
+
+ [AllowAnonymous]
+ [HttpPost]
+ public IActionResult CreateToken([FromBody]CustomModels.loginReq login)
+ {
+ IActionResult response = Unauthorized();
+ var user = Authenticate(login);
+
+ if (user != null)
+ {
+ var tokenString = BuildToken(user);
+ response = Ok(new { token = tokenString });
+ }
+
+ return response;
+ }
+
+ private string BuildToken(Users user)
+ {
+ var claims = new[] {
+
+ new Claim(JwtRegisteredClaimNames.Email, user.Email),
+ new Claim(JwtRegisteredClaimNames.Sub, user.Username),
+ new Claim("Role", user.Role),
+ new Claim("Address", user.Address),
+ new Claim("Project", user.Project),
+ new Claim("ProjectManager", user.ProjectManager),
+ new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
+ };
+
+ var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
+ var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+
+ var token = new JwtSecurityToken(_config["Jwt:Issuer"],
+ _config["Jwt:Issuer"],
+ claims,
+ expires: DateTime.Now.AddMinutes(30),
+ signingCredentials: creds);
+
+ return new JwtSecurityTokenHandler().WriteToken(token);
+ }
+
+ private Users Authenticate(loginReq Details)
+ {
+ Users user = _usersdbContext.Users.Where(x => x.Username == Details.Username && x.Password == Details.Password).FirstOrDefault();
+ if (user != null)
+ {
+ user = new Users { Username = user.Username, Email = user.Email, Role = user.Role };
+ }
+ return user;
+ }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/Controllers/signupController.cs b/Abha_Rana/login_signup/userjwt/userjwt/Controllers/signupController.cs
new file mode 100644
index 0000000..2779f14
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/Controllers/signupController.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using userjwt.DbModels;
+
+namespace userjwt.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class signupController : ControllerBase
+ {
+ DbModels.usersdbContext _usersdbContext;
+
+ private IConfiguration _config;
+
+ public signupController(IConfiguration config, DbModels.usersdbContext usersdbContext)
+ {
+ _config = config;
+ _usersdbContext = usersdbContext;
+ }
+ [HttpPost]
+ public IActionResult createUser([FromBody]CustomModels.UserRequest userRequest)
+ {
+ DbModels.Users user = new DbModels.Users();
+ user.Username = userRequest.Username;
+ user.Password = userRequest.Password;
+ user.Email = userRequest.Email;
+ user.Name = userRequest.Name;
+ user.Project = userRequest.Project;
+ user.ProjectManager = userRequest.ProjectManager;
+ user.Phone = userRequest.Phone;
+ user.Role = userRequest.Role;
+ user.Address = userRequest.Address;
+ _usersdbContext.Users.Add(user);
+ _usersdbContext.SaveChanges();
+ return Ok("Record added");
+ }
+ [HttpPut]
+ public IActionResult updateUser([FromBody]CustomModels.UserRequest userRequest)
+ {
+ Users user = Users.Find(userRequest.Username);
+ user.Username = userRequest.Username;
+ user.Password = userRequest.Password;
+ user.Email = userRequest.Email;
+ user.Name = userRequest.Name;
+ user.Project = userRequest.Project;
+ user.ProjectManager = userRequest.ProjectManager;
+ user.Phone = userRequest.Phone;
+ user.Role = userRequest.Role;
+ user.Address = userRequest.Address;
+ _usersdbContext.Users.Add(user);
+ _usersdbContext.SaveChanges();
+ return Ok("Record updated");
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/UserRequest.cs b/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/UserRequest.cs
new file mode 100644
index 0000000..754d121
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/UserRequest.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace userjwt.CustomModels
+{
+ public class UserRequest
+ {
+ public string Username { get; set; }
+ public string Password { get; set; }
+ public string Email { get; set; }
+ public string Name { get; set; }
+ public string Project { get; set; }
+ public string ProjectManager { get; set; }
+ public long? Phone { get; set; }
+ public string Role { get; set; }
+ public string Address { get; set; }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/loginReq.cs b/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/loginReq.cs
new file mode 100644
index 0000000..5b9c71b
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/CustomModels/loginReq.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace userjwt.CustomModels
+{
+ public class loginReq
+ {
+ public string Username { get; set; }
+ public string Password { get; set; }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/DbModels/Users.cs b/Abha_Rana/login_signup/userjwt/userjwt/DbModels/Users.cs
new file mode 100644
index 0000000..c0dff91
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/DbModels/Users.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+namespace userjwt.DbModels
+{
+ public partial class Users
+ {
+ public int Empid { get; set; }
+ public string Username { get; set; }
+ public string Password { get; set; }
+ public string Email { get; set; }
+ public string Name { get; set; }
+ public string Project { get; set; }
+ public string ProjectManager { get; set; }
+ public long? Phone { get; set; }
+ public string Role { get; set; }
+ public string Address { get; set; }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/DbModels/usersdbContext.cs b/Abha_Rana/login_signup/userjwt/userjwt/DbModels/usersdbContext.cs
new file mode 100644
index 0000000..337e0e6
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/DbModels/usersdbContext.cs
@@ -0,0 +1,72 @@
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+
+namespace userjwt.DbModels
+{
+ public partial class usersdbContext : DbContext
+ {
+ public usersdbContext()
+ {
+ }
+
+ public usersdbContext(DbContextOptions options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet Users { get; set; }
+
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+ {
+ }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Email);
+
+ entity.Property(e => e.Email)
+ .HasMaxLength(100)
+ .IsUnicode(false)
+ .ValueGeneratedNever();
+
+ entity.Property(e => e.Address)
+ .HasMaxLength(200)
+ .IsUnicode(false);
+
+ entity.Property(e => e.Empid).ValueGeneratedOnAdd();
+
+ entity.Property(e => e.Name)
+ .IsRequired()
+ .HasMaxLength(50)
+ .IsUnicode(false);
+
+ entity.Property(e => e.Password)
+ .IsRequired()
+ .HasMaxLength(100)
+ .IsUnicode(false);
+
+ entity.Property(e => e.Project)
+ .HasMaxLength(50)
+ .IsUnicode(false);
+
+ entity.Property(e => e.ProjectManager)
+ .HasMaxLength(50)
+ .IsUnicode(false);
+
+ entity.Property(e => e.Role)
+ .IsRequired()
+ .HasMaxLength(50)
+ .IsUnicode(false)
+ .HasDefaultValueSql("('Employee')");
+
+ entity.Property(e => e.Username)
+ .IsRequired()
+ .HasMaxLength(200)
+ .IsUnicode(false);
+ });
+ }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/Program.cs b/Abha_Rana/login_signup/userjwt/userjwt/Program.cs
new file mode 100644
index 0000000..3d2ff8b
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/Program.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+
+namespace userjwt
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ CreateWebHostBuilder(args).Build().Run();
+ }
+
+ public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
+ WebHost.CreateDefaultBuilder(args)
+ .UseStartup();
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/Properties/launchSettings.json b/Abha_Rana/login_signup/userjwt/userjwt/Properties/launchSettings.json
new file mode 100644
index 0000000..67f59dd
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/Properties/launchSettings.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:62429",
+ "sslPort": 44352
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "launchUrl": "api/values",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "userjwt": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "launchUrl": "api/values",
+ "applicationUrl": "https://localhost:5001;http://localhost:5000",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/Startup.cs b/Abha_Rana/login_signup/userjwt/userjwt/Startup.cs
new file mode 100644
index 0000000..ff558ff
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/Startup.cs
@@ -0,0 +1,67 @@
+using System.Text;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.IdentityModel.Tokens;
+
+namespace userjwt
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ // This method gets called by the runtime. Use this method to add services to the container.
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
+ .AddJwtBearer(options =>
+ {
+ options.TokenValidationParameters = new TokenValidationParameters
+ {
+ ValidateIssuer = true,
+ ValidateAudience = true,
+ ValidateLifetime = true,
+ ValidateIssuerSigningKey = true,
+ ValidIssuer = Configuration["Jwt:Issuer"],
+ ValidAudience = Configuration["Jwt:Issuer"],
+ IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
+ };
+ });
+ services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
+ services.AddDbContext(sql => sql.UseSqlServer(ConnectionString));
+
+ }
+
+ // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+ public void Configure(IApplicationBuilder app, IHostingEnvironment env)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+ else
+ {
+ app.UseHsts();
+ }
+
+ app.UseCors(builder => builder
+ .AllowAnyOrigin()
+ .AllowAnyMethod()
+ .AllowAnyHeader()
+ .AllowCredentials());
+ app.UseAuthentication();
+ app.UseHttpsRedirection();
+ app.UseMvc();
+
+ }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/appsettings.Development.json b/Abha_Rana/login_signup/userjwt/userjwt/appsettings.Development.json
new file mode 100644
index 0000000..e203e94
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/appsettings.Development.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Debug",
+ "System": "Information",
+ "Microsoft": "Information"
+ }
+ }
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/appsettings.json b/Abha_Rana/login_signup/userjwt/userjwt/appsettings.json
new file mode 100644
index 0000000..26c3b9b
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Jwt": {
+ "Key": "ThisismySecretKey",
+ "Issuer": "Test.com"
+ },
+ "ConnectionString": "Server=CYG292;Database=usersdb;Trusted_Connection=True;"
+
+}
diff --git a/Abha_Rana/login_signup/userjwt/userjwt/userjwt.csproj b/Abha_Rana/login_signup/userjwt/userjwt/userjwt.csproj
new file mode 100644
index 0000000..9789ed6
--- /dev/null
+++ b/Abha_Rana/login_signup/userjwt/userjwt/userjwt.csproj
@@ -0,0 +1,19 @@
+
+
+
+ netcoreapp2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Abha_Rana/node/controllers/employees.js b/Abha_Rana/node/controllers/employees.js
new file mode 100644
index 0000000..30b31b8
--- /dev/null
+++ b/Abha_Rana/node/controllers/employees.js
@@ -0,0 +1,52 @@
+const model=require('../models');
+class Employee
+{
+ constructor()
+ {
+
+ }
+ async create(req,res)
+ {
+ let employeeObj={
+ name:req.body.name,
+ email:req.body.email,
+ phone:req.body.phone,
+ address:{
+ city:req.body.address.city,
+ state:req.body.address.state,
+ pincode:req.body.address.pincode
+ },
+ designation:req.body.designation,
+ technologies:req.body.technologies,
+ age:req.body.age
+ }
+ const employee=await model.employee.save(employeeObj);
+ res.send(employee);
+ }
+ async update(req,res)
+ { let employeeObj;
+ employeeObj = {...employeeObj, ...req.body};
+ // (OR) const employee=await model.employee.update({ _id: req.params.id}, {"$set":{"age":req.body.age}});
+ const employee=await model.employee.update({ _id: req.params.id}, employeeObj);
+ res.send(employee);
+ }
+ async delete(req,res)
+ {
+ const employee=await model.employee.delete({ _id: req.params.id});
+ res.send(employee);
+ }
+ async index(req,res)
+ {
+ const employeeObj= await model.employee.get();
+ res.send(employeeObj);
+ }
+ async show(req,res)
+ {
+ const employeeObj= await model.employee.show({_id:req.params.id});
+ res.send(employeeObj);
+ }
+
+
+
+}
+module.exports= new Employee();
\ No newline at end of file
diff --git a/Abha_Rana/node/controllers/index.js b/Abha_Rana/node/controllers/index.js
new file mode 100644
index 0000000..1e83c17
--- /dev/null
+++ b/Abha_Rana/node/controllers/index.js
@@ -0,0 +1,6 @@
+const employees=require('./employees');
+
+module.exports =
+{
+ employees : employees
+}
\ No newline at end of file
diff --git a/Abha_Rana/node/database/config.js b/Abha_Rana/node/database/config.js
new file mode 100644
index 0000000..c80e3b1
--- /dev/null
+++ b/Abha_Rana/node/database/config.js
@@ -0,0 +1,11 @@
+const mongoose=require('mongoose');
+const url="mongodb://localhost:27017/bootcamp";
+mongoose.Promise=global.Promise;
+//db connection
+mongoose.connect(url, {useNewUrlParser:true, keepAlive:1}).then((res) =>{
+ console.log("connnection established");
+}).catch( error =>{
+ console.log(error.message);
+});
+module.exports=mongoose;
+
\ No newline at end of file
diff --git a/Abha_Rana/node/index.js b/Abha_Rana/node/index.js
new file mode 100644
index 0000000..42ed38d
--- /dev/null
+++ b/Abha_Rana/node/index.js
@@ -0,0 +1,14 @@
+const express=require('express');
+const bodyParser=require('body-parser');
+const databse=require('./database/config');
+const app=express();
+app.use(bodyParser.json());
+require('./routes/route.js')(app); //passing express obj to routes
+app.listen(3000,()=> {
+ console.log("listening at port 3000");
+});
+app.get("/",(req,res)=>{
+ console.log("Hello,this is node");
+ res.send({"text":"Welcome to nodejs"});
+});
+
diff --git a/Abha_Rana/node/models/employee.js b/Abha_Rana/node/models/employee.js
new file mode 100644
index 0000000..d3d2317
--- /dev/null
+++ b/Abha_Rana/node/models/employee.js
@@ -0,0 +1,33 @@
+const mongoose=require('mongoose');
+const schema=require('../schemas');
+const employeeSchema=mongoose.Schema(schema.employee);
+class Employee
+{
+ constructor()
+ {
+ this.model = mongoose.model('Employee',employeeSchema);
+ }
+ async get(criteria={})
+ {
+ return this.model.find(criteria);
+ }
+ async save(employeeObj)
+ {
+ return this.model.create(employeeObj);
+ }
+ async update(criteria={},updateObj)
+ {
+ return this.model.update(criteria,updateObj);
+
+ }
+ async delete(criteria={})
+ {
+ return this.model.deleteOne(criteria);
+ }
+ async show(criteria={})
+ {
+ return this.model.find(criteria);
+ }
+
+}
+module.exports=new Employee();
\ No newline at end of file
diff --git a/Abha_Rana/node/models/index.js b/Abha_Rana/node/models/index.js
new file mode 100644
index 0000000..a02c060
--- /dev/null
+++ b/Abha_Rana/node/models/index.js
@@ -0,0 +1,4 @@
+var employee=require('./employee');
+module.exports={
+ employee : employee
+}
\ No newline at end of file
diff --git a/Abha_Rana/node/package-lock.json b/Abha_Rana/node/package-lock.json
new file mode 100644
index 0000000..9950ca9
--- /dev/null
+++ b/Abha_Rana/node/package-lock.json
@@ -0,0 +1,515 @@
+{
+ "name": "node",
+ "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=="
+ },
+ "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="
+ },
+ "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=="
+ },
+ "kareem": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
+ "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
+ },
+ "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/Abha_Rana/node/package.json b/Abha_Rana/node/package.json
new file mode 100644
index 0000000..22f9c8f
--- /dev/null
+++ b/Abha_Rana/node/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "node",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "start":"nodemon index.js"
+ },
+ "author": "abha",
+ "license": "ISC",
+ "dependencies": {
+ "body-parser": "^1.19.0",
+ "express": "^4.17.1",
+ "mongoose": "^5.8.11"
+ }
+}
diff --git a/Abha_Rana/node/routes/route.js b/Abha_Rana/node/routes/route.js
new file mode 100644
index 0000000..c9d1132
--- /dev/null
+++ b/Abha_Rana/node/routes/route.js
@@ -0,0 +1,21 @@
+const controller=require('../controllers');
+module.exports=(app) => {
+
+
+ app.get("/employees",controller.employees.index);
+ app.get("/employees/:id",controller.employees.index);
+ app.post("/employees",controller.employees.create);
+ app.put("/employees/:id",controller.employees.update);
+ app.delete("/employees/:id",controller.employees.delete);
+
+
+
+ app.post("/bootcamp",(req,res) => {
+ console.log(req.body);
+ res.send({session:`Bootcamp session: ${req.body.year}`});
+ });
+ app.post("/info",(req,res) =>{
+ console.log(req.body);
+ res.send({name:`${req.body.name}`,course:`${req.body.course}`,Email:`${req.body.email}`});
+ });
+};
\ No newline at end of file
diff --git a/Abha_Rana/node/schemas/employee.js b/Abha_Rana/node/schemas/employee.js
new file mode 100644
index 0000000..783313f
--- /dev/null
+++ b/Abha_Rana/node/schemas/employee.js
@@ -0,0 +1,14 @@
+module.exports={
+ name: { type:String , default:null },
+ email: { type:String , required:true},
+ phone: { type:String,default:null },
+ address:{
+ city: { type:String ,default:null},
+ state: { type: String ,default:null},
+ pincode: { type:String , default:null }
+ },
+ designation:{ type: String,default:'CONSULTANT 1',enum:['CONSULTANT 1','CONSULTANT 2','ASSOCIATE 1','INTERN']},
+ technologies:[{type:String,default:null}],
+ age:{ type:Number, default:null}
+
+}
\ No newline at end of file
diff --git a/Abha_Rana/node/schemas/index.js b/Abha_Rana/node/schemas/index.js
new file mode 100644
index 0000000..6faf199
--- /dev/null
+++ b/Abha_Rana/node/schemas/index.js
@@ -0,0 +1,4 @@
+const employee=require('./employee');
+module.exports={
+ employee:employee
+};
\ No newline at end of file