예제 #1
0
파일: admin.py 프로젝트: msherman64/portal
    def keycloak_metadata(self, obj):
        """User metadata from keycloak backend. Returns a list of strings."""
        keycloak_client = KeycloakClient()
        keycloak_user = keycloak_client.get_user_by_username(
            obj.requestor.username)

        if not keycloak_user:
            return "No Keycloak User Found"

        full_name = "{} {}".format(keycloak_user["lastName"],
                                   keycloak_user["firstName"])
        email = keycloak_user["email"]
        yield [f"Name: {full_name}", f"Email: {email}"]

        for key, val in keycloak_user["attributes"].items():
            if key not in ["joinDate"]:
                # convert camelcase to separate out words
                key = re.sub("([A-Z])", " \\1", key).strip().capitalize()
                yield [(f"{key}: {val}")]
예제 #2
0
    def update_user_metadata_from_keycloak(self, tas_formatted_user):
        keycloak_client = KeycloakClient()
        keycloak_user = keycloak_client.get_user_by_username(
            tas_formatted_user["username"])

        if keycloak_user:
            attrs = keycloak_user["attributes"]
            tas_formatted_user.update({
                "institution":
                attrs.get("affiliationInstitution", None),
                "department":
                attrs.get("affiliationDepartment", None),
                "title":
                attrs.get("affiliationTitle", None),
                "country":
                attrs.get("country", None),
                "phone":
                attrs.get("phone", None),
                "citizenship":
                attrs.get("citizenship", None),
            })
        return tas_formatted_user
예제 #3
0
    def lazy_add_user_to_keycloak(self):
        keycloak_client = KeycloakClient()
        # check if user exist in keycloak
        keycloak_user = keycloak_client.get_user_by_username(self.current_user)
        if keycloak_user:
            return
        user = self.get_user(self.current_user)
        portal_user = self._get_user_from_portal_db(self.current_user)
        join_date = None
        if portal_user:
            join_date = datetime.timestamp(portal_user.date_joined)

        kwargs = {
            "first_name": user["firstName"],
            "last_name": user["lastName"],
            "email": user["email"],
            "affiliation_title": user["title"],
            "affiliation_department": user["department"],
            "affiliation_institution": user["institution"],
            "country": user["country"],
            "citizenship": user["citizenship"],
            "join_date": join_date,
        }
        keycloak_client.create_user(self.current_user, **kwargs)