mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Added Group backend CRUD
This commit is contained in:
@@ -45,7 +45,7 @@ public partial class LdapService : IDisposable
|
||||
public string UsersBaseDn => string.IsNullOrEmpty(_opts.UsersOu) ? _opts.BaseDn : $"{_opts.UsersOu},{_opts.BaseDn}";
|
||||
public string GroupsBaseDn => string.IsNullOrEmpty(_opts.GroupsOu) ? _opts.BaseDn : $"{_opts.GroupsOu},{_opts.BaseDn}";
|
||||
public string MigrationsBaseDn => string.IsNullOrEmpty(_opts.MigrationsOu) ? _opts.BaseDn : $"{_opts.MigrationsOu},{_opts.BaseDn}";
|
||||
|
||||
public string[] GroupsAttributes => ["cn", "gidNumber", "description"];
|
||||
public async Task<IEnumerable<Dictionary<string, string>>> ListLocationsAsync()
|
||||
{
|
||||
return await ListObjectBy(LocationsBaseDn, "(ou=locations)", ["l", "street", "description"]);
|
||||
@@ -107,14 +107,34 @@ public partial class LdapService : IDisposable
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<GroupModel>> ListGroupsAsync(string[] attributes)
|
||||
{
|
||||
List<GroupModel> returnValue = [];
|
||||
(await ListObjectBy(GroupsBaseDn, "", attributes))
|
||||
.ToList()
|
||||
.ForEach(x =>
|
||||
returnValue.Add(
|
||||
new GroupModel(x)
|
||||
{
|
||||
Cn = x["cn"]
|
||||
}
|
||||
)
|
||||
);
|
||||
return returnValue;
|
||||
}
|
||||
public async Task<UserModel> GetUserByUidAsync(string uid)
|
||||
{
|
||||
return new UserModel((await ListObjectBy(UsersBaseDn, $"uid={uid}", ["cn", "sn", "title", "uid", "jpegPhoto", "userPassword", "description"])).First()) {Uid = uid};
|
||||
return new UserModel((await ListObjectBy(UsersBaseDn, $"uid={uid}", ["cn", "sn", "title", "uid", "jpegPhoto", "userPassword", "description"])).First()) { Uid = uid };
|
||||
}
|
||||
|
||||
public async Task<UserModel> GetUserByUidAsync(string uid, string[] attributes)
|
||||
{
|
||||
return new UserModel((await ListObjectBy(UsersBaseDn, $"uid={uid}", attributes)).First()) {Uid = uid};
|
||||
return new UserModel((await ListObjectBy(UsersBaseDn, $"uid={uid}", attributes)).First()) { Uid = uid };
|
||||
}
|
||||
|
||||
public async Task<GroupModel> GetGroupByCnAsync(string cn, string[] attributes)
|
||||
{
|
||||
return new GroupModel((await ListObjectBy(GroupsBaseDn, $"cn={cn}", attributes)).First()) { Cn = cn };
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +149,12 @@ public partial class LdapService : IDisposable
|
||||
await CreateObject(dn, attributeSet);
|
||||
}
|
||||
|
||||
public async Task CreateGroup(string cn, LdapAttributeSet attributeSet)
|
||||
{
|
||||
string dn = PrependRDN($"cn={cn}", GroupsBaseDn);
|
||||
await CreateObject(dn, attributeSet);
|
||||
}
|
||||
|
||||
public async Task CreateAsset(LdapAttributeSet attributeSet)
|
||||
{
|
||||
await CreateObject(AssetsBaseDn, attributeSet);
|
||||
@@ -228,13 +254,30 @@ public partial class LdapService : IDisposable
|
||||
string dn = PrependRDN($"uid={uid}", UsersBaseDn);
|
||||
DeleteObjectByDn(dn);
|
||||
}
|
||||
|
||||
public void DeleteGroup(string cn)
|
||||
{
|
||||
string dn = PrependRDN($"cn={cn}", GroupsBaseDn);
|
||||
DeleteObjectByDn(dn);
|
||||
}
|
||||
|
||||
public async Task UpdateUser(string uid, string attributeName, string attributeValue)
|
||||
{
|
||||
await UpdateObject(UsersBaseDn, "uid", uid, attributeName, attributeValue);
|
||||
}
|
||||
|
||||
public async Task UpdateGroup(string cn, string attributeName, string attributeValue)
|
||||
{
|
||||
await UpdateObject(GroupsBaseDn, "cn", cn, attributeName, attributeValue);
|
||||
}
|
||||
|
||||
public async Task UpdateObject(string baseDn, string rdnKey, string rdnValue, string attributeName, string attributeValue)
|
||||
{
|
||||
await ConnectAndBind();
|
||||
string dn = PrependRDN($"uid={uid}", UsersBaseDn);
|
||||
if (attributeName == "uid")
|
||||
string dn = PrependRDN($"{rdnKey}={rdnValue}", baseDn);
|
||||
if (attributeName == rdnKey)
|
||||
{
|
||||
await _conn.RenameAsync(dn, $"uid={attributeValue}", true);
|
||||
await _conn.RenameAsync(dn, $"{rdnKey}={attributeValue}", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user