Пример #1
0
        /// <summary>
        /// Инициализация прав доступа
        /// </summary>
        /// <returns></returns>
        private async Task AccessRightsInitAsync()
        {
            if (_dbContext.AccessRights.Count() == 0)
            {
                var adminRole = await _roleManager
                                .FindByNameAsync(Helpers.RoleName.admin.ToString());

                var operatorRole = await _roleManager
                                   .FindByNameAsync([email protected]());

                var casherRole = await _roleManager
                                 .FindByNameAsync(Helpers.RoleName.casher.ToString());

                var clientRole = await _roleManager
                                 .FindByNameAsync(Helpers.RoleName.client.ToString());

                foreach (var item in _dbContext.ControllersNames.ToArray())
                {
                    var rights = await ControllerHelper
                                 .GetActionsRightsAsync(item.Name);

                    if (item.Name.Equals(nameof(UsersController)))
                    {
                        await _dbContext.AccessRights
                        .AddAsync(new AccessRight()
                        {
                            ControllerId = item.Id,
                            RoleId       = operatorRole.Id,
                            IsAvailable  = true
                        });
                    }
                    else if (item.Name.Equals(nameof(CassaController)))
                    {
                        await _dbContext.AccessRights
                        .AddAsync(new AccessRight()
                        {
                            ControllerId = item.Id,
                            RoleId       = casherRole.Id,
                            IsAvailable  = true
                        });
                    }
                    else if (item.Name.Equals(nameof(ClientController)))
                    {
                        var cRights = await ControllerHelper
                                      .GetActionsRightsAsync(item.Name);

                        var accr = new AccessRight()
                        {
                            ControllerId = item.Id,
                            RoleId       = clientRole.Id,
                            IsAvailable  = true
                        };
                        accr.UpdateActionRight(nameof(ClientController.Get), false);
                        await _dbContext.AccessRights.AddAsync(accr);
                    }

                    var ar = new AccessRight()
                    {
                        ControllerId = item.Id,
                        RoleId       = adminRole.Id,
                        IsAvailable  = true
                    };

                    await _dbContext.AccessRights.AddAsync(ar);

                    await _dbContext.SaveChangesAsync();
                }
            }
        }