MCPcopy
hub / github.com/chartbrew/chartbrew / transferOwnership

Method transferOwnership

server/controllers/TeamController.js:103–132  ·  view source on GitHub ↗
(teamId, userId, newOwnerId)

Source from the content-addressed store, hash-verified

101 }
102
103 async transferOwnership(teamId, userId, newOwnerId) {
104 const newOwnerRole = await db.TeamRole
105 .findOne({ where: { team_id: teamId, user_id: newOwnerId } });
106
107 if (newOwnerRole?.role !== "teamAdmin") {
108 return new Promise((resolve, reject) => reject(new Error("New owner must be a team admin")));
109 }
110
111 const otherTeams = await db.TeamRole
112 .findAll({ where: { user_id: userId, role: "teamOwner", team_id: { [Op.ne]: teamId } } });
113
114 if (otherTeams.length < 1) {
115 return new Promise((resolve, reject) => reject(new Error("The user needs to be the owner of at least one other team")));
116 }
117
118 const transaction = await db.sequelize.transaction();
119
120 try {
121 // all good now, change the teamRole of the owner to teamAdmin, and vice versa
122 await db.TeamRole.update({ role: "teamAdmin" }, { where: { team_id: teamId, user_id: userId }, transaction });
123 await db.TeamRole.update({ role: "teamOwner" }, { where: { team_id: teamId, user_id: newOwnerId }, transaction });
124
125 await transaction.commit();
126
127 return true;
128 } catch (error) {
129 await transaction.rollback();
130 return new Promise((resolve, reject) => reject(error));
131 }
132 }
133
134 // add a new team role
135 addTeamRole(teamId, userId, roleName, projects, canExport) {

Callers 1

TeamRoute.jsFile · 0.80

Calls 2

findAllMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected