Skip to content

Commit

Permalink
Merge pull request #46 from yamaritta/feat/sync-all-ldap
Browse files Browse the repository at this point in the history
feat: added ldap sync all users
  • Loading branch information
theburyat authored Aug 20, 2024
2 parents effcce8 + 535d7ac commit d18cf0e
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 86 deletions.
18 changes: 3 additions & 15 deletions src/Casdoor.Client/Abstractions/ICasdoorAccountClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,7 @@ namespace Casdoor.Client;

public interface ICasdoorAccountClient
{
public Task<CasdoorResponse?> AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default);

public Task<CasdoorLdap?> GetLdapAsync(string ldapId, CancellationToken cancellationToken = default);

public Task<IEnumerable<CasdoorLdap>?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default);

public Task<CasdoorSyncLdapResult?> SyncLdapUsersAsync(string owner, string id, IEnumerable<CasdoorLdapUser> users, CancellationToken cancellationToken = default);

public Task<CasdoorLdapUsers?> GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default);
public Task<CasdoorResponse?> SetPasswordAsync(CasdoorUser user, string oldPassword,
string newPassword,
CancellationToken cancellationToken = default);
}
2 changes: 1 addition & 1 deletion src/Casdoor.Client/Abstractions/ICasdoorClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace Casdoor.Client;

public interface ICasdoorClient :
ICasdoorUserClient, ICasdoorTokenClient, ICasdoorServiceClient,
ICasdoorApplicationClient, ICasdoorOrganizationClient, ICasdoorProviderClient, ICasdoorAccountClient
ICasdoorApplicationClient, ICasdoorOrganizationClient, ICasdoorProviderClient, ICasdoorAccountClient, ICasdoorLdapClient
{

}
36 changes: 36 additions & 0 deletions src/Casdoor.Client/Abstractions/ICasdoorLdapClient.cs
Original file line number Diff line number Diff line change
@@ -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<CasdoorResponse?> AddLdapAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> DeleteLdapAsync(string owner, string id, CancellationToken cancellationToken = default);

public Task<CasdoorLdap?> GetLdapAsync(string ldapId, CancellationToken cancellationToken = default);

public Task<IEnumerable<CasdoorLdap>?> GetLdapsAsync(string owner, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> SyncLdapUsersAsync(string owner, string id, IEnumerable<CasdoorLdapUser> users, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> SyncLdapAllUsersAsync(string ldapId, CancellationToken cancellationToken = default);

public Task<CasdoorLdapUsers?> GetLdapUsersAsync(string ldapId, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> UpdateLdapAsync(string id, CasdoorLdap ldap, CancellationToken cancellationToken = default);

public Task<CasdoorResponse?> TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default);
}
70 changes: 0 additions & 70 deletions src/Casdoor.Client/CasdoorClient.AccountApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,74 +30,4 @@ public partial class CasdoorClient
string url = _options.GetActionUrl("set-password", queryMap);
return PostAsJsonAsync(url, user, cancellationToken);
}

public virtual Task<CasdoorResponse?> 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<CasdoorResponse?> 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<CasdoorLdap?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<CasdoorLdap?>();
}

public virtual async Task<IEnumerable<CasdoorLdap>?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<IEnumerable<CasdoorLdap>?>();
}

public virtual Task<CasdoorResponse?> 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<CasdoorLdapUsers?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<CasdoorLdapUsers?>();
}

public virtual async Task<CasdoorSyncLdapResult?> SyncLdapUsersAsync(string owner, string id, IEnumerable<CasdoorLdapUser> 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<CasdoorSyncLdapResult?>();
}

public virtual async Task<CasdoorResponse?> TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default)
{
var url = _options.GetActionUrl("test-ldap");
return await PostAsJsonAsync(url, ldap, cancellationToken);
}
}
95 changes: 95 additions & 0 deletions src/Casdoor.Client/CasdoorClient.LdapApi.cs
Original file line number Diff line number Diff line change
@@ -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<CasdoorResponse?> 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<CasdoorResponse?> 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<CasdoorLdap?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<CasdoorLdap?>();
}

public virtual async Task<IEnumerable<CasdoorLdap>?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<IEnumerable<CasdoorLdap>?>();
}

public virtual Task<CasdoorResponse?> 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<CasdoorLdapUsers?> 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<CasdoorResponse?>(url, cancellationToken: cancellationToken);
return result.DeserializeData<CasdoorLdapUsers?>();
}

public virtual Task<CasdoorResponse?> SyncLdapUsersAsync(string owner, string id, IEnumerable<CasdoorLdapUser> 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<CasdoorResponse?> 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<CasdoorResponse?> TestLdapConnectionAsync(CasdoorLdap ldap, CancellationToken cancellationToken = default)
{
var url = _options.GetActionUrl("test-ldap");
return await PostAsJsonAsync(url, ldap, cancellationToken);
}
}

0 comments on commit d18cf0e

Please sign in to comment.