Проверьте, является ли текущий пользователь владельцем GitHub remote в zsh - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь написать хук git pre-push, который выполняет некоторые действия до нажатия на origin , если человек, который толкает, является владельцем репо. Есть ли способ проверить это в bash / zsh?

1 Ответ

2 голосов
/ 02 ноября 2019

Вы можете сделать это, если пользователь использует HTTPS. Вам нужно будет использовать конечную точку аутентифицированного пользователя , чтобы найти идентификатор текущего пользователя, скажем, с помощью curl, а затем проверить, совпадает ли этот пользователь с владельцем хранилища, проверивURL.

Чтобы получить соответствующие учетные данные, вы можете взять удаленный URL (например, https://github.com/git/git.git) и направить его на git credential fill, чтобы найти имя пользователя и пароль, например:

echo url=https://github.com/git/git.git | git credential fill

Выходной формат определен на справочной странице git-credential. Эти учетные данные также можно использовать для API, чтобы сделать ваш запрос, хотя учтите, что, поскольку curl требует, чтобы пароль передавался в командной строке, вы предоставите эти учетные данные кому-либо еще на компьютере. Вариант без оболочки может быть более безопасным.

Технически, есть также способы определить это через SSH, но те полагаются на анализ фиксированного вывода, который может быть изменен, и, как таковой, выследует предположить, что вы не можете получить эту информацию для удаленных SSH.

Обратите внимание, что это говорит вам о текущем пользователе, который вы можете проверить по URL, но не говорит, есть ли у пользователя административные привилегии наРЕПО, что они не владеют собой (например, принадлежат организации). Поскольку вы не сказали нам, что вы хотите сделать с этой информацией, мы не сможем вам помочь, хотя, если вы пытаетесь использовать API, вы можете просто сделать это и посмотреть, успешно это или нет.

Поскольку в этом случае вы используете хранилище учетных данных пользователя, вам необходимо четко и прямо сообщить пользователю о том, что вы делаете, чтобы пользователь не удивился использованию вами учетных данных. Было бы неэтично и, вероятно, незаконно использовать учетные данные пользователя так, как я описал, без их ведома и согласия.

...