Esempio n. 1
0
    def get(self, uid="*"):
        ldap = Ldap()
        if uid not in [u"*", "*", None]:
            dn, user = ldap.search(uid, attrlist="*").first()
            return self.succ([user])

        def cmp(a, b):
            if a["employeeNumber"] > b["employeeNumber"]:
                return 1
            elif a["employeeNumber"] == b["employeeNumber"]:
                return 0
            return -1

        return self.succ(
            sorted([user for dn, user in ldap.search(attrlist="*").all()],
                   cmp))
Esempio n. 2
0
    def get(self, uid="*"):
        ldap = Ldap()
        if uid not in [u"*", "*", None]:
            dn, user = ldap.search(uid, attrlist="*").first()
            return self.succ([user])

        def cmp(a, b):
            if a["employeeNumber"] > b["employeeNumber"]:
                return 1
            elif a["employeeNumber"] == b["employeeNumber"]:
                return 0
            return -1

        return self.succ(sorted(
            [user for dn, user in ldap.search(attrlist="*").all()], cmp
        ))
Esempio n. 3
0
    def get(self, uid, pwd):

        if session.__contains__(USER_SESSION):
            User.add(session[USER_SESSION])
            return self.fail("已登录")

        if not session.__contains__(KEY_SESSION):
            raise ExceptionEx("未申请密钥")

        uid = crypt.desc(uid)
        pwd = crypt.desc(pwd)

        ldap = Ldap()
        if not ldap.auth(uid, pwd):
            return self.fail("用户名或密码错误")

        dn, _user = ldap.search(uid).first()

        User.add(_user)
        session[USER_SESSION] = _user
        return self.succ(session[USER_SESSION])
Esempio n. 4
0
    def update():
        _ldap_dict = {}
        ldap = Ldap()
        _ldap_users = ldap.search().all()

        for dn, user in _ldap_users:
            _ldap_dict[user["uid"].lower()] = user

        users = User.query.all()
        user_dict = {}
        for user in users:
            user_dict[user.uid.lower()] = user

        # 删除离职的
        for uid in set(user_dict.keys()).difference(_ldap_dict.keys()):
            user_dict[uid].is_dimiss = True

        # 修改存在的
        for uid in set(user_dict.keys()).intersection(_ldap_dict.keys()):
            u, ldap = user_dict[uid], _ldap_dict[uid]
            u.is_dimiss = False
            for field in ldap.keys():
                if field == "x-csf-emp-onboardDate":
                    u.onboardDate = ldap[field]
                else:
                    setattr(u, field, ldap[field])

        # 添加新增的
        for uid in set(_ldap_dict.keys()).difference(user_dict.keys()):
            _user = _ldap_dict[uid]
            user = User(_user)
            user.create_time = datetime.now()
            user.last_time = datetime.now()
            user.onboardDate = datetime.strptime(
                _user["x-csf-emp-onboardDate"], "%Y%m%d")
            user.is_admin = False
            db.session.add(user)

        db.session.commit()
        return True
Esempio n. 5
0
    def update():
        _ldap_dict = {}
        ldap = Ldap()
        _ldap_users = ldap.search().all()

        for dn, user in _ldap_users:
            _ldap_dict[user["uid"].lower()] = user

        users = User.query.all()
        user_dict = {}
        for user in users:
            user_dict[user.uid.lower()] = user

        # 删除离职的
        for uid in set(user_dict.keys()).difference(_ldap_dict.keys()):
            user_dict[uid].is_dimiss = True

        # 修改存在的
        for uid in set(user_dict.keys()).intersection(_ldap_dict.keys()):
            u, ldap = user_dict[uid], _ldap_dict[uid]
            u.is_dimiss = False
            for field in ldap.keys():
                if field == "x-csf-emp-onboardDate":
                    u.onboardDate = ldap[field]
                else:
                    setattr(u, field, ldap[field])

        # 添加新增的
        for uid in set(_ldap_dict.keys()).difference(user_dict.keys()):
            _user = _ldap_dict[uid]
            user = User(_user)
            user.create_time = datetime.now()
            user.last_time = datetime.now()
            user.onboardDate = datetime.strptime(_user["x-csf-emp-onboardDate"], "%Y%m%d")
            user.is_admin = False
            db.session.add(user)

        db.session.commit()
        return True