Description
updateRole() updates the role definition in the database. A role is defined with the role function, which implements the grant-based role system of ActivityInfo. updateRole() will also silently add a new role if the role id has not yet been used.
Usage
updateRole(databaseId, role)
addRole(databaseId, role)
deleteRoles(databaseId, roleIds)
Arguments
Argument | Description |
---|---|
databaseId |
the id of the database |
role |
the role definition |
roleIds |
the ids of the roles to be deleted. It should be passed as a character vector. |
Details
addRole() will add a new role definition and will stop the script if the role already exists.
deleteRoles() can take a list of role ids and will delete those. It will provide a warning if any role id was not found but will continue and delete any ids that do exist.
Older style non-grant roles are deprecated. See resourcePermissions for more details for old roles without grants. These will be phased out of use and should be avoided.
Examples
# Use the current grant-based roles; legacy roles are deprecated
grantBased = TRUE
dbId = "cxy123"
if (grantBased) {
currentGrantBasedRole <-
role(id = "rp",
label = "Reporting Partner",
parameters = list(
parameter(id = "partner", label = "Partner", range = "ck5dxt1712")),
grants = list(
grant(resourceId = "cq9xyz1552",
permissions = resourcePermissions(
view = "ck5dxt1712 == @user.partner",
edit_record = "ck5dxt1712 == @user.partner",
discover = TRUE,
export_records = TRUE)),
grant(resourceId = "cz55555555",
permissions = resourcePermissions(
view = TRUE,
discover = TRUE,
add_record = TRUE),
optional = TRUE))
)
# Duplicate the role with a different id
currentGrantBasedRole2 <- currentGrantBasedRole
currentGrantBasedRole2$id <- "rp2"
addRole(dbId, currentGrantBasedRole)
addRole(dbId, currentGrantBasedRole2)
currentGrantBasedRole$label <- "Original reporting orgs"
updateRole(dbId, currentGrantBasedRole)
deleteRoles(dbId, c(currentGrantBasedRole$id,currentGrantBasedRole2$id))
# delete all roles containing "readonly" - will fail if assigned to a user
remainingRoles <- sapply((getDatabaseTree(dbId))$roles, function(x) x$id)
readOnlyRoles <- remainingRoles[grepl("readonly", remainingRoles)]
deleteRoles(dbId, roleIds = readOnlyRoles)
} else {
# These older-style roles will be phased out.
deprecatedNonGrantRole <- list(
id = "rp",
label = "Reporting partner",
permissions = resourcePermissions(
view = "ck5dxt1712 == @user.partner",
edit_record = "ck5dxt1712 == @user.partner",
export_records = TRUE
),
parameters = list(
list(
id = "partner",
label = "Partner",
range = "ck5dxt1712"
)
),
filters = list(
roleFilter(
id = "partner",
label = "partner is user's partner",
filter = "ck5dxt1712 == @user.partner"
)
)
)
updateRole("cxy123", deprecatedNonGrantRole)
}