예제 #1
0
        // [Obsolete]
        public async Task <IActionResult> GetConformUser(string Email)
        {
            var user = await userManager.FindByNameAsync(Email);

            if (await userManager.IsInRoleAsync(user, "User") && user.Confirmed != Confirmed.block && !user.Block)
            {
                var Code     = new Random().Next(1234, 9999);
                var UserCode = _contect.UserCodeConfierm.SingleOrDefault(i => i.UserId == user.Id && i.Type == Codetype.PasswordUser);
                if (UserCode != null)
                {
                    UserCode.Code       = Code.ToString();
                    UserCode.ExperdDate = DateTime.Now.AddMinutes(10);
                    UserCode.Type       = Codetype.PasswordUser;
                }
                else
                {
                    var UserCodeConfierm = new UserCodeConfierm()
                    {
                        ExperdDate = DateTime.Now.AddMinutes(10),
                        UserId     = user.Id,
                        Code       = Code.ToString(),
                        Type       = Codetype.PasswordUser
                    };
                    _contect.UserCodeConfierm.Add(UserCodeConfierm);
                }


                _contect.SaveChanges();
                var Use  = _contect.Users.SingleOrDefault(i => i.id == user.Id);
                var Body = AlertNotifiction.ReadeFile("wwwroot//Emailfile//conformEmile.html")
                           .Replace("#name#", Use.AName).Replace("#code#", Code.ToString());
                AlertNotifiction.SendEmail(user.Email, " Conform Account", _SmtpSettings, Body);

                return(Ok());
            }
            else
            {
                return(NotFound());
            }
        }
예제 #2
0
        public async Task <IActionResult> RegisterUser(UserModelview model)
        {
            if (ModelState.IsValid)
            {
                var User = new UserIdentity()
                {
                    UserName    = model.Email,
                    PhoneNumber = model.Phon,
                    Email       = model.Email,
                    Confirmed   = Confirmed.non,
                    Block       = false
                };

                try
                {
                    var result = await userManager.CreateAsync(User, model.Password);

                    if (result.Succeeded)
                    {
                        var user = new User()
                        {
                            id    = User.Id,
                            Name  = model.Name,
                            AName = model.AName,
                            Hdate = DateTime.Now,
                        };

                        if (!await roleManager.RoleExistsAsync("User"))
                        {
                            await roleManager.CreateAsync(new IdentityRole("User"));
                        }
                        await userManager.AddToRoleAsync(User, "User");

                        _contect.Users.Add(user);
                        _contect.SaveChanges();

                        //get Token :)
                        var claim = new[]
                        {
                            new Claim("Id", User.Id),

                            new Claim("Rolas", userManager.GetRolesAsync(User).Result.FirstOrDefault())
                        };
                        var signinKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:SigningKey"]));

                        int expiryInMinutes = Convert.ToInt32(_configuration["Jwt:ExpiryInHouer"]);

                        var token = new JwtSecurityToken(
                            claims: claim,
                            issuer: _configuration["Jwt:Site"],
                            audience: _configuration["Jwt:Site"],
                            expires: DateTime.UtcNow.AddHours(expiryInMinutes),
                            signingCredentials: new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256)
                            );

                        /// code conform
                        var Code             = new Random().Next(1234, 9999);
                        var UserCodeConfierm = new UserCodeConfierm()
                        {
                            ExperdDate = DateTime.Now.AddMinutes(10),
                            UserId     = user.id,
                            Code       = Code.ToString(),
                            Type       = Codetype.PasswordUser
                        };
                        _contect.UserCodeConfierm.Add(UserCodeConfierm);
                        _contect.SaveChanges();

                        var Body = AlertNotifiction.ReadeFile("wwwroot//Emailfile//conformEmile.html")
                                   .Replace("#name#", user.AName).Replace("#code#", Code.ToString());
                        AlertNotifiction.SendEmail(user.UserIdentity.Email, " Conform Account", _SmtpSettings, Body);

                        return(Ok(new
                        {
                            token = new JwtSecurityTokenHandler().WriteToken(token),
                            expiration = token.ValidTo,
                            user.id,
                            user.Name,
                            user.AName,
                            user.UserIdentity.Email,
                            user.UserIdentity.PhoneNumber,
                            Roles = userManager.GetRolesAsync(User).Result.FirstOrDefault()
                        }));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                catch (Exception e)
                {
                    return(BadRequest(new IdentityError()
                    {
                        Description = e.Message.ToString()
                    }));
                }
            }
            else
            {
                return(BadRequest());
            }
        }