MCPcopy Create free account
hub / github.com/gogs/gogs / removeTeamMember

Function removeTeamMember

internal/database/org_team.go:582–642  ·  view source on GitHub ↗
(e Engine, orgID, teamID, uid int64)

Source from the content-addressed store, hash-verified

580}
581
582func removeTeamMember(e Engine, orgID, teamID, uid int64) error {
583 if !isTeamMember(e, orgID, teamID, uid) {
584 return nil
585 }
586
587 // Get team and its repositories.
588 t, err := getTeamByID(e, teamID)
589 if err != nil {
590 return err
591 }
592
593 // Check if the user to delete is the last member in owner team.
594 if t.IsOwnerTeam() && t.NumMembers == 1 {
595 return ErrLastOrgOwner{UID: uid}
596 }
597
598 t.NumMembers--
599
600 if err = t.getRepositories(e); err != nil {
601 return err
602 }
603
604 // Get organization.
605 org, err := getUserByID(e, orgID)
606 if err != nil {
607 return err
608 }
609
610 tu := &TeamUser{
611 UID: uid,
612 OrgID: orgID,
613 TeamID: teamID,
614 }
615 if _, err := e.Delete(tu); err != nil {
616 return err
617 } else if _, err = e.ID(t.ID).AllCols().Update(t); err != nil {
618 return err
619 }
620
621 // Delete access to team repositories.
622 for _, repo := range t.Repos {
623 if err = repo.recalculateTeamAccesses(e, 0); err != nil {
624 return err
625 }
626 }
627
628 // This must exist.
629 ou := new(OrgUser)
630 _, err = e.Where("uid = ?", uid).And("org_id = ?", org.ID).Get(ou)
631 if err != nil {
632 return err
633 }
634 ou.NumTeams--
635 if t.IsOwnerTeam() {
636 ou.IsOwner = false
637 }
638 if _, err = e.ID(ou.ID).AllCols().Update(ou); err != nil {
639 return err

Callers 2

RemoveOrgUserFunction · 0.85
RemoveTeamMemberFunction · 0.85

Calls 11

isTeamMemberFunction · 0.85
getTeamByIDFunction · 0.85
getUserByIDFunction · 0.85
IsOwnerTeamMethod · 0.80
getRepositoriesMethod · 0.80
DeleteMethod · 0.80
WhereMethod · 0.80
UpdateMethod · 0.65
IDMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected