FastAPI开发OpenLDAP管理平台(三)

关注公众号《DevOps运维民工》,将获取更多运维干货

目录

简介

步骤

效果

更多文章请扫一扫


简介

这节来实现给某个Group增加用户和移除某个组下的用户。
remove_user_in_group方法: 移除某个组中的用户
add_user_in_group方法: 给某个组增加用户

步骤

导入模块

from ldap3.extend.microsoft.addMembersToGroups import ad_add_members_to_groups
from ldap3.extend.microsoft.removeMembersFromGroups import ad_remove_members_from_groups

实现逻辑
完整代码参考上一节

class LDAP(LdapConfig):
    '''
         如果要重写LdapConfig__init__,注意要继承父类的构造方法.
    格式:
        super(子类,self).__init__(参数1,参数2,....)
    '''

    def remove_user_in_group(self,username,groupName):
        '''
            作用:
                移除Group中的的member(users)
            格式:
                from ldap3.extend.microsoft.removeMembersFromGroups import ad_remove_members_from_groups
        :param username:
        :param groupName:
        :return:
        '''
        ldap = LdapGetUsers()
        usersInfo = ldap.get_user_dn(username)
        if usersInfo == False:
            BadRequesHttpException()
        else:
            ad_remove_members_from_groups(
                        self.conn,
                        f'cn={username},ou={usersInfo["ou"]},{basednPeople["basedn"]}',
                        f'cn={groupName},{basednGroup["basedn"]}',
                        fix=True
            )
        return self.conn.result


    def add_user_in_group(self,username,groupName):
        '''
            作用:
                将用户添加到Group
            格式:
                ldap3.extend.microsoft.addMembersToGroups.ad_add_members_to_groups(connection, members_dn, groups_dn, fix=True, raise_error=False)
        :return:
        '''
        ldap = LdapGetUsers()
        usersInfo = ldap.get_user_dn(username)
        if usersInfo == False:
            BadRequesHttpException()
        else:
            ad_add_members_to_groups(
                        self.conn,
                        f'cn={username},ou={usersInfo["ou"]},{basednPeople["basedn"]}',
                        f'cn={groupName},{basednGroup["basedn"]}',
                        fix=True
                        )
        return self.conn.result

说明:

  • ad_remove_members_from_groups和ad_add_members_to_groups方法参数格式是一样的
  • members_dn: 要删除/添加的的成员列表
  • groups_dn:要从哪个Group移除/添加成员

接口实现

@router.post("/group/users",description="添加用户到Group")
async def add_user_in_group(username:str,groupName:str,token: str = Depends(oauth2_scheme)):
    ldap = ldap_api.LDAP(Token.Decryption(token)["username"], Token.Decryption(token)["password"])
    result = ldap.add_user_in_group(username,groupName)
    return result

@router.delete("/group/users",description="移除Group中的users")
async def remove_user_in_group(username:str,groupName:str,token: str = Depends(oauth2_scheme)):
    ldap = ldap_api.LDAP(Token.Decryption(token)["username"], Token.Decryption(token)["password"])
    result = ldap.remove_user_in_group(username,groupName)
    return result

写两个接口,除了HTTP操作方法不一样,其他都一样,分别传递要操作的username和Group名称即可。

效果

添加用户到Group

 可见用户已经成功添加到执行的group下

 

 从group移除用户

 

 

 就这么简单两个接口完成。

更多文章请扫一扫

 扫描下面二维码关注公众号获取更多学习资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值