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 + + + + + + + + + + +
+
+ +
+
+ + +
+
+
+

All Employee Details

+
+
+ + + + + + + + + + + + + + + + + +
S.noNameUserNamePhoneRoleEmailAddressProject
+
+ +
+ + + + +
+ + + + \ 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 + + + + + + + + + +
+
+
+
+

Member Log In

+
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+
+ + + + + + + + \ 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 + + + + + + + + + + + + + + +
UsernameNameEmailRole
+ + + \ 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 + + + + + + + + + + + + + + + +
+ +
+
+ + +

Registration Form


+ + + +
+ +
+
+ + +
+
+
+ + + +
+ +
+
+ + +
+
+
+ + + +
+ +
+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+
+ + + + +
+ +
+
+ + +
+
+
+ + + +
+ +
+
+ + +
+
+
+ + + + + + + +
+ +

+                                +
+
+ +
+
+
+ + + + \ 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