コード例 #1
0
        public async Task <bool> Authorize(int userId, int teamId, TeamAction action)
        {
            List <string> userRoles = await _rolesDao.GetRoles(userId, teamId);

            List <string> acceptedRoles;

            switch (action)
            {
            case TeamAction.RemoveTeam:
            case TeamAction.GenerateJoinCode:
            case TeamAction.ChangeRole:
            case TeamAction.RenameTeam:
            case TeamAction.RemoveJoinCode:
            case TeamAction.RemoveMember:
                return(userRoles.Contains(_adminRole));

            case TeamAction.AddMember:
            case TeamAction.CreateMeeting:
                acceptedRoles = new List <string> {
                    _adminRole, _moderatorRole
                };
                return(userRoles.Intersect(acceptedRoles).Any());


            case TeamAction.MemberAccess:

                acceptedRoles = new List <string> {
                    _adminRole, _moderatorRole, _memberRole,
                };
                return(userRoles.Intersect(acceptedRoles).Any());
            }

            return(false);
        }