示例#1
0
        public async Task <IActionResult> Create([Bind("Id,AreaName,AreaCaption,ControllerName,ControllerCaption,ActionName,ActionCaption,ActionType")] Permissions permissions)
        {
            if (ModelState.IsValid)
            {
                _context.Add(permissions);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(permissions));
        }
示例#2
0
        public async Task <IActionResult> Create([Bind("Id,UserName,Password,PasswordSalt,IsActive,CreateDate")] Users users)
        {
            if (ModelState.IsValid)
            {
                users.Id         = Guid.NewGuid();
                users.CreateDate = DateTime.Now;
                _context.Add(users);
                await _context.SaveChangesAsync();

                _cache.Remove(_userListCacheKey);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(users));
        }
示例#3
0
        public async Task <T> AddAsync(T entity)
        {
            try
            {
                await _dbContext.Set <T>().AddAsync(entity);

                await _dbContext.SaveChangesAsync();

                return(entity);
            }
            catch (Exception ex)
            {
                //LogError(MethodBase.GetCurrentMethod().Name, ex);
                throw ex;
            }
        }
示例#4
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                //check password with confirmpassword
                //check user name already!!!!!
                var saltPassword = Guid.NewGuid().ToString();
                var hashPassword = EncyrptionUtility.GenerateHashWithSalt(model.Password, saltPassword); //EncyrptionUtility.HashSHA256($"{saltPassword}{model.Password}");

                var user = new Users
                {
                    CreateDate   = DateTime.Now,
                    Id           = Guid.NewGuid(),
                    IsActive     = true,
                    UserName     = model.UserName,
                    PasswordSalt = saltPassword,
                    Password     = hashPassword
                };
                await _context.AddAsync(user);

                await _context.SaveChangesAsync();

                return(RedirectToAction("Login"));
            }
            return(View(model));
        }
        public async Task <IActionResult> Login(string userName, string password)
        {
            var user = _context.Users.SingleOrDefault(q => q.UserName == userName);

            if (user == null)
            {
                return(BadRequest("invalid username & password"));
            }

            var hashPassword = EncyrptionUtility.GenerateHashWithSalt(password, user.PasswordSalt);

            if (user.Password != hashPassword)
            {
                return(BadRequest("invalid username & password"));
            }

            var refreshToken = GenerateNewRefreshToken();
            //step 1 : invalid user refresh token
            //step 2 : insert new refreshtoken in db
            var userToken = new UserTokens
            {
                CreateDate   = DateTime.Now,
                ExpireDate   = DateTime.Now.AddMinutes(_tokenTimeOut),
                IsValid      = true,
                RefreshToken = refreshToken,
                UserId       = user.Id
            };
            await _context.AddAsync(userToken);

            await _context.SaveChangesAsync();

            var model = new LoginViewModel
            {
                FirstName    = user.UserName,
                LastName     = "Rezaei",
                Token        = GenerateNewToken(user.Id.ToString()),
                RefreshToken = refreshToken
            };

            return(Ok(model));
        }
示例#6
0
        /// <summary>
        /// </summary>
        /// <returns></returns>
        public async Task <ActionResult> GeneratePermissions()
        {
            var permissionList = new List <Permissions>();

            //لیست دسترسی های موجود در دیتابیس
            var oldPremissionList = await _context.Permissions.ToListAsync();

            //لیست کنترلرها
            var controllers = Assembly.GetExecutingAssembly().GetTypes().Where(q => q.BaseType == typeof(Areas.Admin.Controllers.BaseController));

            foreach (var controller in controllers)
            {
                //لیست اکشن های یک کنترلر
                var actions = controller.GetMethods().Where(q => q.IsPublic && q.DeclaringType.FullName == controller.FullName);
                foreach (var action in actions)
                {
                    //چک کردن اینکه از قبل در دیتابیس وجود نداشته باشد
                    if (!oldPremissionList.Any(q => q.AreaName == controller.FullName && q.ActionName == action.Name && q.ActionType == GetActionType(action)))
                    {
                        var permission = new Permissions
                        {
                            ActionName        = action.Name,
                            ControllerName    = controller.Name,
                            ControllerCaption = controller.Name,
                            ActionCaption     = $"{controller.Name}-{action.Name}",
                            ActionType        = GetActionType(action),
                            AreaName          = controller.FullName,
                        };
                        permissionList.Add(permission);
                    }
                }
            }
            await _context.AddRangeAsync(permissionList);

            await _context.SaveChangesAsync();

            return(View());
        }