diff --git a/models/org_team.go b/models/org_team.go
index 40eb037452ed..0aba0cbb2303 100644
--- a/models/org_team.go
+++ b/models/org_team.go
@@ -496,6 +496,12 @@ func AddTeamMember(team *organization.Team, userID int64) error {
 	}
 	defer committer.Close()
 
+	// check in transaction
+	isAlreadyMember, err = organization.IsTeamMember(ctx, team.OrgID, team.ID, userID)
+	if err != nil || isAlreadyMember {
+		return err
+	}
+
 	sess := db.GetEngine(ctx)
 
 	if err := db.Insert(ctx, &organization.TeamUser{
diff --git a/models/organization/org.go b/models/organization/org.go
index 3761335922a4..43d96793b1ac 100644
--- a/models/organization/org.go
+++ b/models/organization/org.go
@@ -594,6 +594,12 @@ func AddOrgUser(orgID, uid int64) error {
 	}
 	defer committer.Close()
 
+	// check in transaction
+	isAlreadyMember, err = IsOrganizationMember(ctx, orgID, uid)
+	if err != nil || isAlreadyMember {
+		return err
+	}
+
 	ou := &OrgUser{
 		UID:      uid,
 		OrgID:    orgID,