diff --git a/src/Casdoor.Client/Abstractions/ICasdoorAccountClient.cs b/src/Casdoor.Client/Abstractions/ICasdoorAccountClient.cs index c85924a..434de75 100644 --- a/src/Casdoor.Client/Abstractions/ICasdoorAccountClient.cs +++ b/src/Casdoor.Client/Abstractions/ICasdoorAccountClient.cs @@ -16,19 +16,7 @@ namespace Casdoor.Client; public interface ICasdoorAccountClient { - public Task AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default); - - public Task DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default); - - public Task GetLdapAsync(string ldapId, CancellationToken cancellationToken = default); - - public Task?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default); - - public Task SyncLdapUsersAsync(string owner, string id, IEnumerable users, CancellationToken cancellationToken = default); - - public Task GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default); - - public Task UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default); - - public Task TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default); + public Task SetPasswordAsync(CasdoorUser user, string oldPassword, + string newPassword, + CancellationToken cancellationToken = default); } diff --git a/src/Casdoor.Client/Abstractions/ICasdoorClient.cs b/src/Casdoor.Client/Abstractions/ICasdoorClient.cs index 82e98de..2e04b6e 100644 --- a/src/Casdoor.Client/Abstractions/ICasdoorClient.cs +++ b/src/Casdoor.Client/Abstractions/ICasdoorClient.cs @@ -16,7 +16,7 @@ namespace Casdoor.Client; public interface ICasdoorClient : ICasdoorUserClient, ICasdoorTokenClient, ICasdoorServiceClient, - ICasdoorApplicationClient, ICasdoorOrganizationClient, ICasdoorProviderClient, ICasdoorAccountClient + ICasdoorApplicationClient, ICasdoorOrganizationClient, ICasdoorProviderClient, ICasdoorAccountClient, ICasdoorLdapClient { } diff --git a/src/Casdoor.Client/Abstractions/ICasdoorLdapClient.cs b/src/Casdoor.Client/Abstractions/ICasdoorLdapClient.cs new file mode 100644 index 0000000..8f04b24 --- /dev/null +++ b/src/Casdoor.Client/Abstractions/ICasdoorLdapClient.cs @@ -0,0 +1,36 @@ +// Copyright 2024 The Casdoor Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace Casdoor.Client; + +public interface ICasdoorLdapClient +{ + public Task AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default); + + public Task DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default); + + public Task GetLdapAsync(string ldapId, CancellationToken cancellationToken = default); + + public Task?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default); + + public Task SyncLdapUsersAsync(string owner, string id, IEnumerable users, CancellationToken cancellationToken = default); + + public Task SyncLdapAllUsersAsync(string ldapId, CancellationToken cancellationToken = default); + + public Task GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default); + + public Task UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default); + + public Task TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default); +} diff --git a/src/Casdoor.Client/CasdoorClient.AccountApi.cs b/src/Casdoor.Client/CasdoorClient.AccountApi.cs index 2e957f2..6104817 100644 --- a/src/Casdoor.Client/CasdoorClient.AccountApi.cs +++ b/src/Casdoor.Client/CasdoorClient.AccountApi.cs @@ -30,74 +30,4 @@ public partial class CasdoorClient string url = _options.GetActionUrl("set-password", queryMap); return PostAsJsonAsync(url, user, cancellationToken); } - - public virtual Task AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default) - { - if (string.IsNullOrEmpty(ldap.ServerName)) - { - ldap.ServerName = CasdoorConstants.DefaultCasdoorLdapServerName; - } - - var url = _options.GetActionUrl("add-ldap"); - return PostAsJsonAsync(url, ldap, cancellationToken); - } - - public virtual async Task DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default) - { - var application = new CasdoorLdap { Owner = owner, Id = id }; - var url = _options.GetActionUrl("delete-ldap"); - return await PostAsJsonAsync(url, application, cancellationToken); - } - - public virtual async Task GetLdapAsync(string ldapId, CancellationToken cancellationToken = default) - { - var queryMap = new QueryMapBuilder().Add("ldapId", ldapId).QueryMap; - var url = _options.GetActionUrl("get-ldap", queryMap); - var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); - return result.DeserializeData(); - } - - public virtual async Task?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default) - { - var queryMap = new QueryMapBuilder().Add("owner", owner).QueryMap; - var url = _options.GetActionUrl("get-ldaps", queryMap); - - var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); - return result.DeserializeData?>(); - } - - public virtual Task UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default) - { - if (string.IsNullOrEmpty(ldap.ServerName)) - { - ldap.ServerName = CasdoorConstants.DefaultCasdoorLdapServerName; - } - - var queryMap = new QueryMapBuilder().Add("id", id).QueryMap; - - var url = _options.GetActionUrl("update-ldap", queryMap); - return PostAsJsonAsync(url, ldap, cancellationToken); - } - - public virtual async Task GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default) - { - var queryMap = new QueryMapBuilder().Add("ldapId", ldapId).QueryMap; - var url = _options.GetActionUrl("get-ldap-users", queryMap); - var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); - return result.DeserializeData(); - } - - public virtual async Task SyncLdapUsersAsync(string owner, string id, IEnumerable users, CancellationToken cancellationToken = default) - { - var queryMap = new QueryMapBuilder().Add("id", $"{owner}/{id}").QueryMap; - var url = _options.GetActionUrl("sync-ldap-users", queryMap); - var result = await PostAsJsonAsync(url, users, cancellationToken); - return result.DeserializeData(); - } - - public virtual async Task TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default) - { - var url = _options.GetActionUrl("test-ldap"); - return await PostAsJsonAsync(url, ldap, cancellationToken); - } } diff --git a/src/Casdoor.Client/CasdoorClient.LdapApi.cs b/src/Casdoor.Client/CasdoorClient.LdapApi.cs new file mode 100644 index 0000000..89a3485 --- /dev/null +++ b/src/Casdoor.Client/CasdoorClient.LdapApi.cs @@ -0,0 +1,95 @@ +// Copyright 2024 The Casdoor Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System.Net.Http.Json; + +namespace Casdoor.Client; + +public partial class CasdoorClient +{ + public virtual Task AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default) + { + if (string.IsNullOrEmpty(ldap.ServerName)) + { + ldap.ServerName = CasdoorConstants.DefaultCasdoorLdapServerName; + } + + var url = _options.GetActionUrl("add-ldap"); + return PostAsJsonAsync(url, ldap, cancellationToken); + } + + public virtual async Task DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default) + { + var application = new CasdoorLdap { Owner = owner, Id = id }; + var url = _options.GetActionUrl("delete-ldap"); + return await PostAsJsonAsync(url, application, cancellationToken); + } + + public virtual async Task GetLdapAsync(string ldapId, CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("ldapId", ldapId).QueryMap; + var url = _options.GetActionUrl("get-ldap", queryMap); + var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); + return result.DeserializeData(); + } + + public virtual async Task?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("owner", owner).QueryMap; + var url = _options.GetActionUrl("get-ldaps", queryMap); + + var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); + return result.DeserializeData?>(); + } + + public virtual Task UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default) + { + if (string.IsNullOrEmpty(ldap.ServerName)) + { + ldap.ServerName = CasdoorConstants.DefaultCasdoorLdapServerName; + } + + var queryMap = new QueryMapBuilder().Add("id", id).QueryMap; + + var url = _options.GetActionUrl("update-ldap", queryMap); + return PostAsJsonAsync(url, ldap, cancellationToken); + } + + public virtual async Task GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("ldapId", ldapId).QueryMap; + var url = _options.GetActionUrl("get-ldap-users", queryMap); + var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); + return result.DeserializeData(); + } + + public virtual Task SyncLdapUsersAsync(string owner, string id, IEnumerable users, CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("id", $"{owner}/{id}").QueryMap; + var url = _options.GetActionUrl("sync-ldap-users", queryMap); + return PostAsJsonAsync(url, users, cancellationToken); + } + + public virtual Task SyncLdapAllUsersAsync(string ldapId, CancellationToken cancellationToken = default) + { + var url = _options.GetActionUrl("v2/sync-ldap-users"); + return PostAsJsonAsync(url, new { Id = ldapId }, cancellationToken); + } + + public virtual async Task TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default) + { + var url = _options.GetActionUrl("test-ldap"); + return await PostAsJsonAsync(url, ldap, cancellationToken); + } +}