diff --git a/docs/resources/role_permission.md b/docs/resources/role_permission.md index 5db61869f..208e68332 100644 --- a/docs/resources/role_permission.md +++ b/docs/resources/role_permission.md @@ -12,7 +12,50 @@ With this resource, you can manage role permissions (1-1). permissions assigned to a role. To avoid potential issues, it is recommended not to use this resource in conjunction with the `auth0_role_permissions` resource when managing permissions for the same role id. +## Example Usage +```terraform +# Example: +resource "auth0_resource_server" "resource_server" { + name = "test" + identifier = "test.example.com" +} + +resource "auth0_resource_server_scopes" "resource_server_scopes" { + resource_server_identifier = auth0_resource_server.resource_server.identifier + + scopes { + name = "store:create" + } + scopes { + name = "store:read" + } + scopes { + name = "store:update" + } + scopes { + name = "store:delete" + } +} + +resource "auth0_role" "my_role" { + name = "My Role" +} + +locals { + scopesList = [ + for scope in auth0_resource_server_scopes.resource_server_scopes.scopes : scope.name + ] +} + +resource "auth0_role_permission" "my_role_perm" { + for_each = toset(local.scopesList) + + role_id = auth0_role.my_role.id + resource_server_identifier = auth0_resource_server.resource_server.identifier + permission = each.value +} +``` ## Schema @@ -29,4 +72,15 @@ with the `auth0_role_permissions` resource when managing permissions for the sam - `id` (String) The ID of this resource. - `resource_server_name` (String) Name of the resource server that the permission is associated with. +## Import + +Import is supported using the following syntax: +```shell +# This resource can be imported by specifying the +# role ID, resource identifier, and permission name separated by "::" (note the double colon) +# :::: +# +# Example: +terraform import auth0_role_permission.permission "rol_XXXXXXXXXXXXX::https://example.com::read:foo" +``` diff --git a/docs/resources/role_permissions.md b/docs/resources/role_permissions.md index 3aed6ccdf..9d75fa43e 100644 --- a/docs/resources/role_permissions.md +++ b/docs/resources/role_permissions.md @@ -12,7 +12,47 @@ With this resource, you can manage role permissions (1-many). appends a permission to a role. To avoid potential issues, it is recommended not to use this resource in conjunction with the `auth0_role_permission` resource when managing permissions for the same role id. - +## Example Usage + +```terraform +# Example: +resource "auth0_resource_server" "resource_server" { + name = "test" + identifier = "test.example.com" +} +resource "auth0_resource_server_scopes" "resource_server_scopes" { + resource_server_identifier = auth0_resource_server.resource_server.identifier + + scopes { + name = "store:create" + } + scopes { + name = "store:read" + } + scopes { + name = "store:update" + } + scopes { + name = "store:delete" + } +} + +resource "auth0_role" "my_role" { + name = "My Role" +} + +resource "auth0_role_permissions" "my_role_perms" { + role_id = auth0_role.my_role.id + + dynamic "permissions" { + for_each = auth0_resource_server_scopes.resource_server_scopes.scopes + content { + name = permissions.value.name + resource_server_identifier = auth0_resource_server.resource_server.identifier + } + } +} +``` ## Schema @@ -39,4 +79,13 @@ Read-Only: - `description` (String) Description of the permission. - `resource_server_name` (String) Name of resource server that the permission is associated with. +## Import + +Import is supported using the following syntax: +```shell +# This resource can be imported by specifying the role ID +# +# Example: +terraform import auth0_role_permissions.all_role_permissions "rol_XXXXXXXXXXXX" +``` diff --git a/examples/resources/auth0_role_permission/import.sh b/examples/resources/auth0_role_permission/import.sh new file mode 100644 index 000000000..28fe53912 --- /dev/null +++ b/examples/resources/auth0_role_permission/import.sh @@ -0,0 +1,6 @@ +# This resource can be imported by specifying the +# role ID, resource identifier, and permission name separated by "::" (note the double colon) +# :::: +# +# Example: +terraform import auth0_role_permission.permission "rol_XXXXXXXXXXXXX::https://example.com::read:foo" diff --git a/examples/resources/auth0_role_permission/resource.tf b/examples/resources/auth0_role_permission/resource.tf new file mode 100644 index 000000000..21156b8a8 --- /dev/null +++ b/examples/resources/auth0_role_permission/resource.tf @@ -0,0 +1,40 @@ +# Example: +resource "auth0_resource_server" "resource_server" { + name = "test" + identifier = "test.example.com" +} + +resource "auth0_resource_server_scopes" "resource_server_scopes" { + resource_server_identifier = auth0_resource_server.resource_server.identifier + + scopes { + name = "store:create" + } + scopes { + name = "store:read" + } + scopes { + name = "store:update" + } + scopes { + name = "store:delete" + } +} + +resource "auth0_role" "my_role" { + name = "My Role" +} + +locals { + scopesList = [ + for scope in auth0_resource_server_scopes.resource_server_scopes.scopes : scope.name + ] +} + +resource "auth0_role_permission" "my_role_perm" { + for_each = toset(local.scopesList) + + role_id = auth0_role.my_role.id + resource_server_identifier = auth0_resource_server.resource_server.identifier + permission = each.value +} diff --git a/examples/resources/auth0_role_permissions/import.sh b/examples/resources/auth0_role_permissions/import.sh new file mode 100644 index 000000000..9f9cd8cbe --- /dev/null +++ b/examples/resources/auth0_role_permissions/import.sh @@ -0,0 +1,4 @@ +# This resource can be imported by specifying the role ID +# +# Example: +terraform import auth0_role_permissions.all_role_permissions "rol_XXXXXXXXXXXX" diff --git a/examples/resources/auth0_role_permissions/resource.tf b/examples/resources/auth0_role_permissions/resource.tf new file mode 100644 index 000000000..72ca773a1 --- /dev/null +++ b/examples/resources/auth0_role_permissions/resource.tf @@ -0,0 +1,37 @@ +# Example: +resource "auth0_resource_server" "resource_server" { + name = "test" + identifier = "test.example.com" +} +resource "auth0_resource_server_scopes" "resource_server_scopes" { + resource_server_identifier = auth0_resource_server.resource_server.identifier + + scopes { + name = "store:create" + } + scopes { + name = "store:read" + } + scopes { + name = "store:update" + } + scopes { + name = "store:delete" + } +} + +resource "auth0_role" "my_role" { + name = "My Role" +} + +resource "auth0_role_permissions" "my_role_perms" { + role_id = auth0_role.my_role.id + + dynamic "permissions" { + for_each = auth0_resource_server_scopes.resource_server_scopes.scopes + content { + name = permissions.value.name + resource_server_identifier = auth0_resource_server.resource_server.identifier + } + } +}