epersonate 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []