Skip to content

Instantly share code, notes, and snippets.

@ivoronin
Created November 22, 2019 19:45
Show Gist options
  • Save ivoronin/d2914c56131f1aa3fec6c436dacb49f6 to your computer and use it in GitHub Desktop.
Save ivoronin/d2914c56131f1aa3fec6c436dacb49f6 to your computer and use it in GitHub Desktop.
Create GitLab Personal Access Token from cli
#
# 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