示例#1
0
        public async Task <IActionResult> UpdateMemberRole([FromBody] OrgMemberDto membershipDto)
        {
            var membership =
                await _dbContext.OrgMembers.Include(om => om.User).SingleOrDefaultAsync(
                    m => m.Org.Slug == OrgSlug && m.User.UserName == membershipDto.UserName);

            if (membership == null)
            {
                return(NotFound());
            }

            if (membershipDto.Role == OrgMemberRole.Owner)
            {
                var owner = await _dbContext.OrgMembers
                            .Include(o => o.User)
                            .Include(o => o.Org)
                            .SingleOrDefaultAsync(
                    m => m.Org.Slug == OrgSlug && m.Role == OrgMemberRole.Owner);

                if (owner != null && owner.Org.Slug == owner.User.UserName)
                {
                    return(new CantChangeOrgOwnerError(owner.User, membership.User));
                }
            }

            membership.Role = membershipDto.Role;

            await _dbContext.SaveChangesAsync();

            return(NoContent());
        }
示例#2
0
        public async Task <IActionResult> AddOrgMember([FromBody] OrgMemberDto membershipDto)
        {
            var user = await _dbContext.Users.SingleOrDefaultAsync(u => u.UserName == membershipDto.UserName);

            if (user == null)
            {
                return(new NoSuchUserError($"No user exists with username {membershipDto.UserName}"));
            }

            var org = await _dbContext.Orgs.SingleAsync(o => o.Slug == OrgSlug);

            if (membershipDto.Role == OrgMemberRole.Owner)
            {
                return(new DuplicateOrgOwnerError(user, org));
            }

            var existingMembership = await _dbContext.OrgMembers.SingleOrDefaultAsync(
                m => m.User == user && m.Org == org);

            if (existingMembership != null)
            {
                return(new DuplicateOrgMemberError(user, org));
            }

            var membership = new OrgMember()
            {
                User = user,
                Org  = org,
                Role = membershipDto.Role
            };

            _dbContext.Add(membership);
            await _dbContext.SaveChangesAsync();

            return(NoContent());
        }