Created
November 22, 2019 19:45
-
-
Save ivoronin/d2914c56131f1aa3fec6c436dacb49f6 to your computer and use it in GitHub Desktop.
Create GitLab Personal Access Token from cli
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# gitlab-rails runner -e production create_gitlab_token.rb <token name> <token> | |
# | |
def update_token(token, desired_name, desired_scopes, desired_token_digest) | |
token.name = desired_name | |
token.scopes = desired_scopes | |
token.name = desired_name | |
token.scopes = desired_scopes | |
token.token_digest = desired_token_digest | |
token.revoked = false | |
token.expires_at = nil | |
token.save! | |
puts "token updated" | |
end | |
def create_token(user, desired_name, desired_scopes, desired_token_digest) | |
token = PersonalAccessToken.create!(name: desired_name, scopes: desired_scopes, user: user, token_digest: desired_token_digest) | |
token.save! | |
puts "token created" | |
end | |
def main(args) | |
if args.length != 2 | |
STDERR.puts "Wrong number of arguments" | |
exit 1 | |
end | |
desired_name = args[0] | |
desired_scopes = [:api] | |
desired_token_digest = Gitlab::CryptoHelper.sha256 args[1] | |
user = User.find_by id: 1 | |
token = PersonalAccessToken.find_by token_digest: desired_token_digest, user: user | |
if token | |
if token.name != desired_name || | |
token.scopes != desired_scopes || | |
token.token_digest != desired_token_digest || | |
token.revoked || | |
token.expires_at | |
update_token(token, desired_name, desired_scopes, desired_token_digest) | |
else | |
puts "token ok" | |
end | |
else | |
create_token(user, desired_name, desired_scopes, desired_token_digest) | |
end | |
end | |
main(ARGV) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment