public async Task <IActionResult> RegisterAsync([FromBody] JobsityUser model) { try { model.SecurityStamp = Guid.NewGuid().ToString(); var created = await _manager.CreateAsync(model, model.Password); if (created != null) { return(Ok(new { Success = created.Succeeded, Data = created, Message = created.Errors.Any() ? created.Errors.FirstOrDefault().Description : string.Empty })); } return(Unauthorized()); } catch (Exception eX) { _logger.LogError(eX, eX.Message); return(BadRequest(eX)); } }
public void BeforeEach() { _fixture = new Fixture().Customize(new AutoMoqCustomization()); _fixture.Customize <JobsityUser>(ob => ob .With(t => t.UserName, "Khalel") .With(t => t.Email, "*****@*****.**") .With(t => t.Password, "Jobsity@123") .With(t => t.SecurityStamp, Guid.NewGuid().ToString()) .WithAutoProperties()); _mockEntity = _fixture.Create <JobsityUser>(); _mockSectionConnection = new Mock <IConfigurationSection>(); //If you want to connect to local SQL Server _mockSectionConnection.Setup(s => s.Value).Returns(@"Server=ABEYSSD\\SQL2017;Initial catalog=jobsityDev;User id=sa;Password=sql2017;"); _mockConfiguration = new Mock <IConfiguration>(); _mockConfiguration.Setup(c => c.GetSection("ConnectionStrings:Jobsity")).Returns(_mockSectionConnection.Object); var options = new DbContextOptionsBuilder <JobsityContext>() .UseSqlServer(_mockConfiguration.Object.GetSection("ConnectionStrings:Jobsity").Value) .Options; _mockContext = new Mock <JobsityContext>(new object[] { options }); var mockUserStore = new Mock <IUserStore <JobsityUser> >(); _mockUserManager = new Mock <UserManager <JobsityUser> >(MockBehavior.Default, new object[] { mockUserStore.Object, null, null, null, null, null, null, null, null }); _mockLogger = new Mock <ILogger <SecurityController> >(); }
public async Task <IActionResult> IndexAsync(JobsityUser entity) { try { if (ModelState.IsValid) { entity.Password = "******"; var client = new RestClient(_config["ApiConnection:Jobsity:Domain"]); var request = new RestRequest("Security/SignIn/"); request.AddJsonBody(entity); var response = client.Execute(request, Method.POST); if (response == null || !response.IsSuccessful) { ModelState.AddModelError("General", "Can't login. Please contact to support team."); return(View()); } if (response.StatusCode == HttpStatusCode.OK) { var jwToken = JsonConvert.DeserializeObject <JwToken>(response.Content); //Save token in session object HttpContext.Session.SetString("JWToken", jwToken.Token); HttpContext.Session.SetString("JWExpiration", jwToken.Expiration.Ticks.ToString()); HttpContext.Session.SetString("sub", entity.UserName); ///var token = UtilJwt.GenerateJwt(ud, jwt); var decoded = GetPrincipalToken(jwToken.Token); var identity = new ClaimsIdentity(decoded.Claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(identity); await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { ExpiresUtc = DateTime.UtcNow.AddHours(12), IsPersistent = true, AllowRefresh = true, }).ConfigureAwait(true); return(RedirectToAction("Index", "Chat")); } } ModelState.AddModelError("General", "Can't login. Please contact to support team."); return(View()); } catch (Exception eX) { Console.WriteLine(eX); return(View()); } }
public async Task <IActionResult> LoginAsync([FromBody] JobsityUser model) { try { var expireTicks = DateTime.UtcNow.AddHours(3); var user = await _manager.FindByNameAsync(model.UserName); if (user != null && await _manager.CheckPasswordAsync(user, model.Password)) { var authClaims = new[] { new Claim(JwtRegisteredClaimNames.Sub, user.UserName), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("expireTicks", expireTicks.Ticks.ToString()) }; var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("*****@*****.**")); var token = new JwtSecurityToken( issuer: "http://ashuerta.com", audience: "http://ashuerta.com", expires: expireTicks, claims: authClaims, signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256) ); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo })); } return(Unauthorized()); } catch (Exception eX) { _logger.LogError(eX, eX.Message); return(BadRequest(eX)); } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger <Startup> logger) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var bdInstall = Configuration.GetValue <bool>("Development:DbInstall"); if (bdInstall) { app.Run(async(context) => { var appCtx = context.RequestServices.GetRequiredService <JobsityContext>(); await appCtx.Database.EnsureDeletedAsync().ConfigureAwait(true); logger.LogInformation("Deleting... Database"); await appCtx.Database.EnsureCreatedAsync().ConfigureAwait(true); logger.LogInformation("Creating... Database"); if (appCtx.Database.CanConnect()) { if (appCtx.Database.IsSqlServer()) { if (!appCtx.Users.Any()) { var userManager = context.RequestServices.GetRequiredService <UserManager <JobsityUser> >(); JobsityUser user = new JobsityUser() { Email = "*****@*****.**", SecurityStamp = Guid.NewGuid().ToString(), UserName = "******" }; await userManager.CreateAsync(user, "Jobsity@123"); logger.LogInformation("User Initializing..."); await context.Response.WriteAsync("Done!").ConfigureAwait(true); await context.Response.WriteAsync(Environment.NewLine).ConfigureAwait(true); await context.Response.WriteAsync("Navigate to /healthCheck to see the health status.").ConfigureAwait(true); await context.Response.WriteAsync(Environment.NewLine).ConfigureAwait(true); } } } }); } app.UseRouting(); app.UseCors(b => b.AllowAnyHeader() .AllowAnyMethod() .WithOrigins("http://localhost:7001") .AllowCredentials() ); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
public IActionResult CreateOne([FromBody] JobsityUser entity) { return(View()); }