36 lines
655 B
TypeScript
36 lines
655 B
TypeScript
import { Group, User, Team } from "@server/models";
|
|
import { allow } from "./cancan";
|
|
import { and, isTeamAdmin, isTeamModel, isTeamMutable } from "./utils";
|
|
|
|
allow(User, "createGroup", Team, (actor, team) =>
|
|
and(
|
|
//
|
|
isTeamAdmin(actor, team),
|
|
isTeamMutable(actor)
|
|
)
|
|
);
|
|
|
|
allow(User, "listGroups", Team, (actor, team) =>
|
|
and(
|
|
//
|
|
isTeamModel(actor, team),
|
|
!actor.isGuest
|
|
)
|
|
);
|
|
|
|
allow(User, "read", Group, (actor, team) =>
|
|
and(
|
|
//
|
|
isTeamModel(actor, team),
|
|
!actor.isGuest
|
|
)
|
|
);
|
|
|
|
allow(User, ["update", "delete"], Group, (actor, team) =>
|
|
and(
|
|
//
|
|
isTeamAdmin(actor, team),
|
|
isTeamMutable(actor)
|
|
)
|
|
);
|