* stub invite endpoint
* feat: First pass invite UI
* feat: allow removing invite rows
* First pass: sending logic
* fix: label accessibility
* fix: add button submits
incorrect permissions
middleware flow error
* 💚
* Error handling, email filtering, tests
* Flow
* Add Invite to people page
Remove old Tip
* Add copy link to subdomain
36 lines
766 B
JavaScript
36 lines
766 B
JavaScript
// @flow
|
|
import policy from './policy';
|
|
import { User } from '../models';
|
|
import { AdminRequiredError } from '../errors';
|
|
|
|
const { allow } = policy;
|
|
|
|
allow(
|
|
User,
|
|
'read',
|
|
User,
|
|
(actor, user) => user && user.teamId === actor.teamId
|
|
);
|
|
|
|
allow(User, 'invite', User, actor => {
|
|
return true;
|
|
});
|
|
|
|
allow(User, ['update', 'delete'], User, (actor, user) => {
|
|
if (!user || user.teamId !== actor.teamId) return false;
|
|
if (user.id === actor.id) return true;
|
|
if (actor.isAdmin) return true;
|
|
throw new AdminRequiredError();
|
|
});
|
|
|
|
allow(
|
|
User,
|
|
['promote', 'demote', 'activate', 'suspend'],
|
|
User,
|
|
(actor, user) => {
|
|
if (!user || user.teamId !== actor.teamId) return false;
|
|
if (actor.isAdmin) return true;
|
|
throw new AdminRequiredError();
|
|
}
|
|
);
|