Example #1
0
        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));
            }
        }
Example #2
0
        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> >();
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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));
            }
        }
Example #5
0
        // 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();
            });
        }
Example #6
0
 public IActionResult CreateOne([FromBody] JobsityUser entity)
 {
     return(View());
 }