epersonate 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4f5397d177275ef4d9bd5832af1859a947cd70555667355277ebdc80c097c18c
4
+ data.tar.gz: 13a56d530a8c5df1b9ff4a4b33a3712c9b6f08d17a05f1b1251300a0a684c101
5
+ SHA512:
6
+ metadata.gz: 5c0b65470e93e13144fd5e781fb1a16ab088a7123b1fafcc7acd65ccc3ea98ac2ea9c855bc273d77e4e23f3704865102d7217a9b7fde3443fa54b90448d897fa
7
+ data.tar.gz: c8ad1da890e855008b64015218d08a03059f52361d441acad4fb18339dc03c4ca255a664351f5ac48b811a5043b5f88784bdeea87b8889c8b5493ec912aec17d
@@ -0,0 +1,8 @@
1
+ doc
2
+ .gem
3
+ *.gem
4
+ *.iml
5
+ .bundle
6
+ Gemfile.lock
7
+ pkg/*
8
+ *.swp
@@ -0,0 +1,74 @@
1
+ # Epersonate Gem
2
+
3
+ > [Official Ruby Wrapper](https://rubygems.org/gems/epersonate) for EPersonate API.
4
+
5
+ ## EPersonate Documentation
6
+
7
+ [Official EPersonate Documentation](https://docs.epersonate.com)
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ gem install epersonate
13
+ ```
14
+
15
+ ### Usage
16
+
17
+ ```ruby
18
+ require 'epersonate'
19
+ ```
20
+
21
+ ### Using Personal Access Token
22
+
23
+ Go to https://epersonate.com/app/settings > Personal Access Token > Create Personal Access Token
24
+
25
+ Add this token to your environment variables.
26
+
27
+ ```ruby
28
+ epersonate = Epersonate.new(EPERSONATE_TOKEN)
29
+ ```
30
+
31
+ **Note: Replace `EPERSONATE_TOKEN` with the token generated before.**
32
+
33
+ ## Example Usage
34
+
35
+ In a classic Rails application with a `sessions_controller.rb`
36
+
37
+ ```ruby
38
+ class SessionsController < ApplicationController
39
+
40
+ def login
41
+ (...)
42
+ current_user(user)
43
+ end
44
+
45
+ def current_user=(user)
46
+ @current_user = user
47
+ end
48
+
49
+ def current_user
50
+ if (@current_user)
51
+ return @current_user
52
+ end
53
+
54
+ impersonation = epersonate.verify({request: request})
55
+
56
+ if (impersonation["valid"])
57
+ @current_user = User.find(impersonation["userId"].to_i)
58
+ else
59
+ remember_token = User.hexdigest(cookies[:remember_token])
60
+ @current_user ||= User.find_by(remember_token: remember_token)
61
+ end
62
+ end
63
+ end
64
+ ```
65
+
66
+
67
+ ## Deploy
68
+
69
+ - Update version in epersonate.gemspec
70
+
71
+ ```bash
72
+ gem build epersonate.gemspec
73
+ gem push epersonate.x.x.x.gem
74
+ ```
@@ -0,0 +1,14 @@
1
+
2
+ Gem::Specification.new do |s|
3
+ s.name = 'epersonate'
4
+ s.version = "0.0.1"
5
+ s.date = '2020-07-28'
6
+ s.summary = "Epersonate Ruby API Wrapper"
7
+ s.description = "Epersonate Ruby API Wrapper"
8
+ s.authors = ["Kevin Antoine"]
9
+ s.email = 'kevin@epersonate.com'
10
+ s.files = `git ls-files`.split("\n")
11
+ s.require_paths = ["lib"]
12
+ s.homepage = 'https://rubygems.org/gems/epersonate'
13
+ s.license = 'MIT'
14
+ end
@@ -0,0 +1,41 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ BASE_URL = "https://api.epersonate.com"
6
+ EPERSONATE_HEADER = 'x-epersonate';
7
+
8
+ class Epersonate
9
+ def initialize(token)
10
+ @personal_access_token = token
11
+ end
12
+
13
+ def verify(args)
14
+ token = args[:token] || (args[:request] && args[:request].cookies[EPERSONATE_HEADER])
15
+ unless token
16
+ return {
17
+ valid: false
18
+ }
19
+ end
20
+ uri = URI.parse(BASE_URL + "/api/v1/impersonations")
21
+ header = {
22
+ 'Content-Type': 'application/json',
23
+ 'Authorization': "Bearer " + @personal_access_token
24
+ }
25
+ body = {
26
+ token: token
27
+ }
28
+
29
+ http = Net::HTTP.new(uri.host, uri.port)
30
+ req = Net::HTTP::Post.new(uri.request_uri, header)
31
+ req.body = body.to_json
32
+ response = http.request(req)
33
+ if response.code == "200"
34
+ return ActiveSupport::JSON.decode(response.body)
35
+ end
36
+
37
+ return {
38
+ valid: false
39
+ }
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: epersonate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Antoine
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Epersonate Ruby API Wrapper
14
+ email: kevin@epersonate.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".gitignore"
20
+ - README.md
21
+ - epersonate.gemspec
22
+ - lib/epersonate.rb
23
+ homepage: https://rubygems.org/gems/epersonate
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubygems_version: 3.1.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Epersonate Ruby API Wrapper
46
+ test_files: []