Skip to content

Allow overwriting hardcoded casbin configuration #702

@josecelano

Description

@josecelano

We are using casbin for the authorization service.

The cabin model and policy are hardcoded:

#[allow(dead_code)]
struct CasbinConfiguration {
    model: String,
    policy: String,
}

impl CasbinConfiguration {
    pub fn new() -> Self {
        CasbinConfiguration {
            model: String::from(
                "
                [request_definition]
                r = role, action
                
                [policy_definition]
                p = role, action
                
                [policy_effect]
                e = some(where (p.eft == allow))
                
                [matchers]
                m = r.role == p.role && r.action == p.action
            ",
            ),
            policy: String::from(
                "
                admin, GetAboutPage
                admin, GetLicensePage
                admin, AddCategory
                admin, DeleteCategory
                admin, GetCategories
                admin, GetImageByUrl
                admin, GetSettings
                admin, GetSettingsSecret
                admin, GetPublicSettings
                admin, AddTag
                admin, DeleteTag
                admin, GetTags
                admin, AddTorrent
                admin, GetTorrent
                admin, DeleteTorrent
                admin, GetTorrentInfo
                admin, GenerateTorrentInfoListing
                admin, GetCanonicalInfoHash
                admin, ChangePassword
                admin, BanUser
                registered, GetAboutPage
                registered, GetLicensePage
                registered, GetCategories
                registered, GetImageByUrl
                registered, GetPublicSettings
                registered, GetTags
                registered, AddTorrent
                registered, GetTorrent
                registered, GetTorrentInfo
                registered, GenerateTorrentInfoListing
                registered, GetCanonicalInfoHash
                registered, ChangePassword
                guest, GetAboutPage
                guest, GetLicensePage
                guest, GetCategories
                guest, GetPublicSettings
                guest, GetTags
                guest, GetTorrent
                guest, GetTorrentInfo
                guest, GenerateTorrentInfoListing
                guest, GetCanonicalInfoHash
                ",
            ),
        }
    }

We want to allow the users to overwrite it by configuration. For now, it would be an unstable option.

[unstable.auth.casbin]
model = """
[request_definition]
r = role, action

[policy_definition]
p = role, action

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = r.role == p.role && r.action == p.action
"""

policy = """
admin, GetAboutPage
admin, GetLicensePage
admin, AddCategory
admin, DeleteCategory
admin, GetCategories
admin, GetImageByUrl
admin, GetSettings
admin, GetSettingsSecret
admin, GetPublicSettings
admin, AddTag
admin, DeleteTag
admin, GetTags
admin, AddTorrent
admin, GetTorrent
admin, DeleteTorrent
admin, GetTorrentInfo
admin, GenerateTorrentInfoListing
admin, GetCanonicalInfoHash
admin, ChangePassword
admin, BanUser
registered, GetAboutPage
registered, GetLicensePage
registered, GetCategories
registered, GetImageByUrl
registered, GetPublicSettings
registered, GetTags
registered, AddTorrent
registered, GetTorrent
registered, GetTorrentInfo
registered, GenerateTorrentInfoListing
registered, GetCanonicalInfoHash
registered, ChangePassword
guest, GetAboutPage
guest, GetLicensePage
guest, GetCategories
guest, GetPublicSettings
guest, GetTags
guest, GetTorrent
guest, GetTorrentInfo
guest, GenerateTorrentInfoListing
guest, GetCanonicalInfoHash
"""

cc @da2ce7 @mario-nt

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions