55 lines
947 B
Ruby
55 lines
947 B
Ruby
|
module Gitlab
|
||
|
class LfsToken
|
||
|
attr_accessor :actor
|
||
|
|
||
|
TOKEN_LENGTH = 50
|
||
|
EXPIRY_TIME = 1800
|
||
|
|
||
|
def initialize(actor)
|
||
|
@actor =
|
||
|
case actor
|
||
|
when DeployKey, User
|
||
|
actor
|
||
|
when Key
|
||
|
actor.user
|
||
|
else
|
||
|
raise 'Bad Actor'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def generate
|
||
|
token = Devise.friendly_token(TOKEN_LENGTH)
|
||
|
|
||
|
Gitlab::Redis.with do |redis|
|
||
|
redis.set(redis_key, token, ex: EXPIRY_TIME)
|
||
|
end
|
||
|
|
||
|
token
|
||
|
end
|
||
|
|
||
|
def value
|
||
|
Gitlab::Redis.with do |redis|
|
||
|
redis.get(redis_key)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def user?
|
||
|
actor.is_a?(User)
|
||
|
end
|
||
|
|
||
|
def type
|
||
|
actor.is_a?(User) ? :lfs_token : :lfs_deploy_token
|
||
|
end
|
||
|
|
||
|
def actor_name
|
||
|
actor.is_a?(User) ? actor.username : "lfs+deploy-key-#{actor.id}"
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def redis_key
|
||
|
"gitlab:lfs_token:#{actor.class.name.underscore}_#{actor.id}" if actor
|
||
|
end
|
||
|
end
|
||
|
end
|