From 1d65cc8944c76a722a028b04a636da7bbb63a658 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Dec 08 2020 11:10:40 +0000 Subject: Support receiving the ssh key base64 encoded Depending on the authentication server being used and its backend it can be that the ssh keys provided are in plain text or base64 encoded, so we want to support both. The support for this using OIDC was added in 5d86053abc278fb5448b508cee92bcd1beb3e3c8 This commit adds the same logic for OpenID. Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/fas_login.py b/pagure/ui/fas_login.py index 1b29303..b7b6732 100644 --- a/pagure/ui/fas_login.py +++ b/pagure/ui/fas_login.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - (c) 2014-2017 - Copyright Red Hat Inc + (c) 2014-2020 - Copyright Red Hat Inc Authors: Pierre-Yves Chibon @@ -11,6 +11,7 @@ from __future__ import unicode_literals, absolute_import import logging +from base64 import b64decode import flask from flask import Markup @@ -62,12 +63,20 @@ def set_user(return_url): try: try: + + ssh_key = flask.g.fas_user.get("ssh_key") + if ssh_key is not None: + try: + ssh_key = b64decode(ssh_key).decode("ascii") + except (TypeError, ValueError): + pass + pagure.lib.query.set_up_user( session=flask.g.session, username=flask.g.fas_user.username, fullname=flask.g.fas_user.fullname, default_email=flask.g.fas_user.email, - ssh_key=flask.g.fas_user.get("ssh_key"), + ssh_key=ssh_key, keydir=pagure_config.get("GITOLITE_KEYDIR", None), ) except pagure.exceptions.PagureException as err: