Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: enforce methods #74

Merged
merged 1 commit into from
Sep 5, 2023
Merged

fix: enforce methods #74

merged 1 commit into from
Sep 5, 2023

Conversation

d1mak3
Copy link
Contributor

@d1mak3 d1mak3 commented Sep 4, 2023

Test code:

using Casdoor.Client;
using ConsoleApp;

var httpClient = new HttpClient();
var options = new CasdoorOptions
{
    // Require: Basic options
    Endpoint = "http://localhost:8000",
    OrganizationName = "built-in",
    ApplicationName = "app-built-in",
    ApplicationType = "native", // webapp, webapi or native
    ClientId = "3edff1676210cca28d24",
    ClientSecret = "9f918ff437282d2eebf94777208e61227d39edd8",

    // Optional: The callback path that the client will be redirected to
    // after the user has authenticated. default is "/casdoor/signin-callback"
    CallbackPath = "/callback",
    // Optional: Whether require https for casdoor endpoint
    RequireHttpsMetadata = false,
    // Optional: The scopes that the client is requesting.
    Scope = "openid profile email"

    // More options can be found at README.md
    // https://github.com/casdoor/casdoor-dotnet-sdk/blob/master/README.md
};

var client = new CasdoorClient(httpClient, options);

var token = await client.RequestPasswordTokenAsync("admin", "123");
client = client.SetBearerToken(token.AccessToken);

Console.WriteLine("Enforce by enforcerId:");
ConsoleExtension.JsonWriteLine(await client.EnforceAsync(
    new[] { "built-in", "built-in/admin", "POST", "/api/signup", "built-in", "built-in/app-built-in" },
    null, null, null, enforcerId: "built-in/api-enforcer-built-in", CancellationToken.None));

Console.WriteLine("Enforce by modelId:");
ConsoleExtension.JsonWriteLine(await client.EnforceAsync(new[] { "built-in/admin", "app-built-in", "read" },
    null, modelId: "built-in/user-model-built-in", null, null, CancellationToken.None));

Console.WriteLine("Enforce by permissionId:");
ConsoleExtension.JsonWriteLine(await client.EnforceAsync(new[] { "built-in/admin", "app-built-in", "read" },
    permissionId: "built-in/permission-built-in", null, null, null, CancellationToken.None));

Console.WriteLine("Enforce by resourceId");
ConsoleExtension.JsonWriteLine(await client.EnforceAsync(
    new[] { "built-in/admin", "app-built-in", "read" },
    null, null, resourceId: "built-in", null, CancellationToken.None));

Console.WriteLine("Batch enforce by enforcerId:");
ConsoleExtension.JsonWriteLine(await client.BatchEnforceAsync(
    new[]
    {
        new[] { "built-in", "built-in/admin", "POST", "/api/signup", "built-in", "built-in/app-built-in" },
        new[] { "built-in", "built-in/admin", "POST", "/api/signup", "built-in", "built-in/app-built-in" }
    },
    null, null, enforcerId: "built-in/api-enforcer-built-in", CancellationToken.None));

Console.WriteLine("Batch enforce by modelId:");
ConsoleExtension.JsonWriteLine(await client.BatchEnforceAsync(new[]
    {
        new[] { "built-in/admin", "app-built-in", "read" },
        new[] { "built-in/admin", "app-built-in", "read" }
    },
    null, modelId: "built-in/user-model-built-in", null, CancellationToken.None));

Console.WriteLine("Batch enforce by permissionId:");
ConsoleExtension.JsonWriteLine(await client.BatchEnforceAsync(new[]
    {
        new[] { "built-in/admin", "app-built-in", "read" },
        new[] { "built-in/admin", "app-built-in", "read" }
    },permissionId: "built-in/permission-built-in", null, null, CancellationToken.None));

Output:

Enforce by enforcerId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": true,
  "data2": null
}
Enforce by modelId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    true
  ],
  "data2": null
}
Enforce by permissionId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    true
  ],
  "data2": null
}
Enforce by resourceId
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    true,
    true
  ],
  "data2": null
}
Batch enforce by enforcerId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    true,
    true
  ],
  "data2": null
}
Batch enforce by modelId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    [
      true,
      true
    ]
  ],
  "data2": null
}
Batch enforce by permissionId:
{
  "status": "ok",
  "msg": "",
  "sub": "",
  "name": "",
  "data": [
    [
      true,
      true
    ]
  ],
  "data2": null
}

@casbin-bot
Copy link

@seriouszyx @ComradeProgrammer @Resulte please review

@hsluoyz hsluoyz merged commit d774c5e into casdoor:master Sep 5, 2023
5 checks passed
@github-actions
Copy link

github-actions bot commented Sep 5, 2023

🎉 This PR is included in version 1.8.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants