node-appwrite
Version:
Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API
102 lines (94 loc) • 2.28 kB
JavaScript
/**
* Helper class to generate role strings for `Permission`.
*/
class Role {
/**
* Grants access to anyone.
*
* This includes authenticated and unauthenticated users.
*
* @returns {string}
*/
static any = () => {
return 'any'
}
/**
* Grants access to a specific user by user ID.
*
* You can optionally pass verified or unverified for
* `status` to target specific types of users.
*
* @param {string} id
* @param {string} status
* @returns {string}
*/
static user = (id, status = '') => {
if (status === '') {
return `user:${id}`
}
return `user:${id}/${status}`
}
/**
* Grants access to any authenticated or anonymous user.
*
* You can optionally pass verified or unverified for
* `status` to target specific types of users.
*
* @param {string} status
* @returns {string}
*/
static users = (status = '') => {
if (status === '') {
return 'users'
}
return `users/${status}`
}
/**
* Grants access to any guest user without a session.
*
* Authenticated users don't have access to this role.
*
* @returns {string}
*/
static guests = () => {
return 'guests'
}
/**
* Grants access to a team by team ID.
*
* You can optionally pass a role for `role` to target
* team members with the specified role.
*
* @param {string} id
* @param {string} role
* @returns {string}
*/
static team = (id, role = '') => {
if (role === '') {
return 'team:' + id
}
return 'team:' + id + '/' + role
}
/**
* Grants access to a specific member of a team.
*
* When the member is removed from the team, they will
* no longer have access.
*
* @param {string} id
* @returns {string}
*/
static member = (id) => {
return 'member:' + id
}
/**
* Grants access to a user with the specified label.
*
* @param {string} name
* @returns {string}
*/
static label = (name) => {
return 'label:' + name;
}
}
module.exports = Role;