public IList <MenuDTO> GetAvailableByRole(int RoleID)
 {
     try
     {
         IList <Menu> menus = _menuRepository.GetMenu().Where(x => x.RoleAccessList.Any(y => y.Role.Id != RoleID)).ToList();
         return(MenuDTO.From(menus));
     }
     catch (Exception x)
     {
         throw x;
     }
 }
        public IList <MenuDTO> GetMenuByGeneralAccess(bool IsGeneralAccess)
        {
            var result = _menuRepository.GetMenu().Where(x => x.IsGeneralAccess == IsGeneralAccess).ToList();

            return(MenuDTO.From(result));
        }
        public IList <MenuDTO> GetByRole(int RoleID)
        {
            var result = _menuRepository.GetMenu().Where(x => x.RoleAccessList.Any(y => y.Role.Id == RoleID)).ToList();

            return(MenuDTO.From(result));
        }
Esempio n. 4
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            DatabaseContext dbContext = new DatabaseContext();

            string userName = context.UserName;
            string password = context.Password;

            if (string.IsNullOrWhiteSpace(userName) || string.IsNullOrWhiteSpace(password))
            {
                context.SetError("invalid_grant", "Invalid credentials");
                return;
            }

            User user = dbContext.Users.Where(x => x.UserName == context.UserName).SingleOrDefault();


            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            if (user != null)
            {
                UserDTO userDTO          = UserDTO.From(user);
                string  existingPassword = DataSecurity.Decrypt(user.Password);
                if (password != existingPassword)
                {
                    context.SetError("invalid_grant", "Provided username and password is incorrect");
                    return;
                }

                UserRole userRole = dbContext.UserRoles.Where(x => x.UserId == user.Id).SingleOrDefault();
                if (userRole != null)
                {
                    identity.AddClaim(new Claim(ClaimTypes.Role, userRole.Role.Name));
                    identity.AddClaim(new Claim("username", user.UserName));
                    identity.AddClaim(new Claim(ClaimTypes.Email, user.UserName));
                    identity.AddClaim(new Claim(ClaimTypes.UserData, user.Id.ToString()));
                    identity.AddClaim(new Claim("userId", user.Id.ToString()));

                    var props = new AuthenticationProperties(new Dictionary <string, string>
                    {
                        {
                            "username", userName
                        },
                        {
                            "role", userRole.Role.Name
                        },
                        {
                            "id", userDTO.Id.ToString()
                        }
                    });


                    if (userDTO.Role != null && userDTO.Role.Count > 0)
                    {
                        foreach (RoleDTO role in userDTO.Role)
                        {
                            if (role.Accesses != null && role.Accesses.Count > 0)
                            {
                                List <MenuDTO> menuList = role.Accesses.ToList();

                                foreach (MenuDTO menu in menuList)
                                {
                                    identity.AddClaim(new Claim(ClaimTypes.Webpage, menu.ControllerName + "$%" + menu.ActionName));
                                }
                            }
                        }
                    }


                    string urlAPI           = string.Format("api/Menu/GetByGeneralAccess?generalAccess=1");
                    var    generlAccessMenu = dbContext.Menus.Where(x => x.IsGeneralAccess == true).ToList();
                    if (generlAccessMenu.Count > 0)
                    {
                        IList <MenuDTO> generlAccessMenuDTO = MenuDTO.From(generlAccessMenu);
                        if (generlAccessMenuDTO != null && generlAccessMenuDTO.Count > 0)
                        {
                            foreach (MenuDTO menu in generlAccessMenuDTO)
                            {
                                identity.AddClaim(new Claim(ClaimTypes.Webpage, menu.ControllerName + "$%" + menu.ActionName));
                            }
                        }
                    }

                    var ticket = new AuthenticationTicket(identity, props);

                    context.Validated(ticket);
                    context.Request.Context.Authentication.SignIn(identity);
                }
                else
                {
                    context.SetError("invalid_grant", "Existing user not set any Role(s)");
                    return;
                }
            }
            else
            {
                context.SetError("invalid_grant", "Provided username and password is incorrect");
                return;
            }
        }