diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-11-13 20:35:47 +0100 |
---|---|---|
committer | Z.J. van de Weg <git@zjvandeweg.nl> | 2016-11-17 21:34:23 +0100 |
commit | 718b08429ce3372756186f9822091e887d91e9b3 (patch) | |
tree | 42a0ff5d1811e4a2c4092192721e426709e3e2b6 /lib | |
parent | d1afb845b16b2a252f03e173fcdb0afa572c013a (diff) | |
download | gitlab-ce-718b08429ce3372756186f9822091e887d91e9b3.tar.gz |
Create relation between chat user and GitLab user and allow to authorize them [ci skip]
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/chat_name_token.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/gitlab/chat_name_token.rb b/lib/gitlab/chat_name_token.rb new file mode 100644 index 00000000000..c8349839219 --- /dev/null +++ b/lib/gitlab/chat_name_token.rb @@ -0,0 +1,45 @@ +require 'json' + +module Gitlab + class ChatNameToken + attr_reader :token + + TOKEN_LENGTH = 50 + EXPIRY_TIME = 1800 + + def initialize(token = new_token) + @token = token + end + + def get + Gitlab::Redis.with do |redis| + data = redis.get(redis_key) + JSON.parse(data, symbolize_names: true) if data + end + end + + def store!(params) + Gitlab::Redis.with do |redis| + params = params.to_json + redis.set(redis_key, params, ex: EXPIRY_TIME) + token + end + end + + def delete + Gitlab::Redis.with do |redis| + redis.del(redis_key) + end + end + + private + + def new_token + Devise.friendly_token(TOKEN_LENGTH) + end + + def redis_key + "gitlab:chat_names:#{token}" + end + end +end |