devise-onesignal 1.2.1 → 2.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/DEPRECATIONS.md +3 -1
- data/INSTALL.md +2 -2
- data/README.md +64 -43
- data/Rakefile +2 -2
- data/devise-onesignal.gemspec +2 -2
- data/lib/devise-onesignal.rb +16 -1
- data/lib/devise-onesignal/configuration.rb +11 -20
- data/lib/devise-onesignal/device_concern.rb +26 -0
- data/lib/devise-onesignal/device_helper.rb +17 -0
- data/lib/devise-onesignal/device_lib.rb +15 -0
- data/lib/devise-onesignal/railtie.rb +17 -0
- data/lib/devise-onesignal/version.rb +2 -2
- data/lib/generators/{devise_one_signal_generator.rb → devise_onesignal_generator.rb} +9 -6
- data/lib/generators/templates/device_model.rb +7 -0
- data/lib/generators/templates/devices_migration.rb.erb +16 -0
- data/lib/generators/templates/initializer.rb +26 -1
- data/vendor/assets/javascripts/devise-onesignal.js.erb +4 -4
- metadata +13 -9
- data/app/controllers/concerns/one_signal_user.rb +0 -34
- data/lib/generators/templates/migration.rb.erb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b88207054f8bb5822b6c47f4932517eee81812ecb3ed7319087ed9660ff0ea88
|
4
|
+
data.tar.gz: f86553157eafcb7d9ef43c5fe7761c17a5d243470a40f95c03c3f1407da52277
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dc9e06943bf79803d871b8458874643791b7123ae78c8909303bed17405d67c80620fd717ee21bf7e0972d1d2c56aea1c43f87c7304261e67d38dc3ea7a2fe5
|
7
|
+
data.tar.gz: b99727eb1b459caa119dc3b57be474c9bc597264196823007ab15f6b306f50371167a2ec59378e23ffb0a8d1fc38d15ad67a34cf5c4b70480d467f26ae8dd157
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,15 @@
|
|
4
4
|
|
5
5
|
* nothing yet
|
6
6
|
|
7
|
+
### 2.0.0 - 2017-12-19
|
8
|
+
|
9
|
+
* features
|
10
|
+
* automatically include helpers and concerns
|
11
|
+
* configuration by passing a block to `configure`
|
12
|
+
* introducing `Device` activerecord model
|
13
|
+
* enhancements
|
14
|
+
* rename `current_onesignal` method to `current_device`
|
15
|
+
|
7
16
|
### 1.2.1 - 2017-12-18
|
8
17
|
|
9
18
|
* enhancements
|
data/DEPRECATIONS.md
CHANGED
data/INSTALL.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
There are three wo more steps to take:
|
5
5
|
|
6
6
|
1) Enter your OneSignal App ID in config/initializers/devise-onesignal.rb
|
7
|
-
2) Run `rails g
|
7
|
+
2) Run `rails g devise-onesignal` and `rails db:migrate`
|
8
8
|
3) Add:
|
9
9
|
|
10
10
|
//= require OneSignalSDK
|
@@ -13,4 +13,4 @@ There are three wo more steps to take:
|
|
13
13
|
to your javascript index in app/assets/javascripts/application.js
|
14
14
|
|
15
15
|
|
16
|
-
Learn more at https://github.com/jonhue/devise-onesignal
|
16
|
+
Learn more at https://github.com/jonhue/devise-onesignal
|
data/README.md
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/devise-onesignal) <img src="https://travis-ci.org/jonhue/devise-onesignal.svg?branch=master" />
|
4
4
|
|
5
|
-
Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app.
|
5
|
+
Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app.
|
6
|
+
|
7
|
+
This gem works well together with [notifications-rails](https://github.com/jonhue/notifications-rails) which introduces a notifications handling & pushing API. To build a cross-platform notification solution also add the [native](https://github.com/NativeGap/native-ruby) gem to your app.
|
6
8
|
|
7
9
|
---
|
8
10
|
|
@@ -10,6 +12,10 @@ Implement user targeted cross-platform notifications with OneSignal & Devise in
|
|
10
12
|
|
11
13
|
* [Installation](#installation)
|
12
14
|
* [Usage](#usage)
|
15
|
+
* [Device methods](#device-methods)
|
16
|
+
* [current_device](#current_device)
|
17
|
+
* [Subscribing](#subscribing)
|
18
|
+
* [Unsubscribing](#unsubscribing)
|
13
19
|
* [Configuration](#configuration)
|
14
20
|
* [To Do](#to-do)
|
15
21
|
* [Contributing](#contributing)
|
@@ -20,7 +26,7 @@ Implement user targeted cross-platform notifications with OneSignal & Devise in
|
|
20
26
|
|
21
27
|
## Installation
|
22
28
|
|
23
|
-
|
29
|
+
devise-onesignal works with Rails 5.0 onwards. You can add it to your `Gemfile` with:
|
24
30
|
|
25
31
|
```ruby
|
26
32
|
gem 'devise-onesignal'
|
@@ -42,17 +48,21 @@ gem 'devise-onesignal', github: 'jonhue/devise-onesignal'
|
|
42
48
|
|
43
49
|
Now run the generator:
|
44
50
|
|
45
|
-
$ rails g
|
51
|
+
$ rails g devise_onesignal
|
46
52
|
|
47
53
|
To wrap things up, migrate the changes into your database:
|
48
54
|
|
49
55
|
$ rails db:migrate
|
50
56
|
|
51
|
-
|
57
|
+
It is time to [create your OneSignal app](https://onesignal.com) if you haven't already and set your application ID in the created initializer (`config/initializers/devise-onesignal.rb`).
|
52
58
|
|
53
|
-
|
59
|
+
Then add ...
|
54
60
|
|
55
|
-
|
61
|
+
```ruby
|
62
|
+
has_many :devices
|
63
|
+
```
|
64
|
+
|
65
|
+
... to your devise class. For example `User` in `app/models/user.rb`.
|
56
66
|
|
57
67
|
Now let's include the neccessary javascript files in our application (`apps/assets/javascripts/application.js`):
|
58
68
|
|
@@ -61,15 +71,7 @@ Now let's include the neccessary javascript files in our application (`apps/asse
|
|
61
71
|
//= require devise-onesignal
|
62
72
|
```
|
63
73
|
|
64
|
-
|
65
|
-
|
66
|
-
```ruby
|
67
|
-
class ApplicationController < ActionController::Base
|
68
|
-
include OneSignalUser
|
69
|
-
end
|
70
|
-
```
|
71
|
-
|
72
|
-
As a last step initialize the javascript component when your assets load. If you are using Rails 5 with Turbolinks, this could look like this:
|
74
|
+
Finally initialize the javascript component when your assets load. If you are using Rails 5 with Turbolinks, this could look like this:
|
73
75
|
|
74
76
|
```js
|
75
77
|
document.addEventListener( 'turbolinks:load', function() {
|
@@ -77,52 +79,71 @@ document.addEventListener( 'turbolinks:load', function() {
|
|
77
79
|
});
|
78
80
|
```
|
79
81
|
|
80
|
-
|
82
|
+
## Usage
|
81
83
|
|
82
|
-
|
84
|
+
### Device methods
|
83
85
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
86
|
+
devise-onesignal introduces a `Device` activerecord model. Every object of your devise class can have multiple devices, one for each device / browser they enabled OneSignal at least once.
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
d = Device.first
|
88
90
|
|
89
|
-
|
91
|
+
# Returns user (or other devise object) that this device belongs to. Can return `nil`.
|
92
|
+
d.user
|
90
93
|
|
91
|
-
|
94
|
+
# Returns OneSignal player id
|
95
|
+
d.onesignal_id
|
92
96
|
|
93
|
-
|
94
|
-
|
95
|
-
{id: 'e9b66bc5-a1e5-4f3f-8a3e-894f576b193a', permission: 'granted', user: UserObject}
|
96
|
-
```
|
97
|
+
# Returns OneSignal permission ( `granted`/`denied`/`default` )
|
98
|
+
d.onesignal_permission
|
97
99
|
|
98
|
-
|
100
|
+
# Some timestamps
|
101
|
+
d.last_used
|
102
|
+
d.created_at
|
103
|
+
d.updated_at
|
99
104
|
|
100
|
-
**Note:** If the user has not enabled OneSignal yet, the hash won't return an ID / user but it still returns the permission. In this case `denied` or `default`.
|
101
105
|
|
102
|
-
|
106
|
+
# If device is ready to receive notifications
|
107
|
+
d.onesignal_enabled?
|
103
108
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
+
# If device has been disabled to receive notifications
|
110
|
+
d.onesignal_disabled?
|
111
|
+
|
112
|
+
# If device has been set previously to receive notifications or not
|
113
|
+
d.onesignal_set?
|
109
114
|
```
|
110
115
|
|
116
|
+
### current_device
|
117
|
+
|
118
|
+
In your controllers and views you can access a `current_device` method that returns the `Device` object of the current OneSignal subscription. If the user browsing your site is not subscribed to OneSignal, `current_device` returns an uncommitted `Device` object with some helpful information, like the `permission` attribute, set.
|
119
|
+
|
120
|
+
### Subscribing
|
121
|
+
|
122
|
+
Just call `OneSignalSubscribe();` in your frontend code and OneSignal will ask your user for permission to send notifications. On the following request an existing `Device` object will either get updated or a new one will get created.
|
123
|
+
|
124
|
+
### Unsubscribing
|
125
|
+
|
126
|
+
**Note:** You most likely don't want to let your users unsubscribe from receiving notifications, but instead allow them to manually disable receiving any new notifications. For that purpose use the [notifications-rails](https://github.com/jonhue/notifications-rails) gem, which adds a notification API and detailed user settings.
|
127
|
+
|
128
|
+
If you want to completely remove a user from OneSignal, call `OneSignalSubscribe();` in your javascript.
|
129
|
+
|
111
130
|
---
|
112
131
|
|
113
132
|
## Configuration
|
114
133
|
|
134
|
+
You can configure devise-onesignal by passing a block to `configure`:
|
135
|
+
|
115
136
|
```ruby
|
116
|
-
|
137
|
+
DeviseOnesignal.configure do |config|
|
138
|
+
config.app_id = ''
|
139
|
+
end
|
117
140
|
```
|
118
141
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
| `persist_notification` | Automatically dismiss the notification after ~20 seconds in Chrome | `false` |
|
125
|
-
| `subscribe_with_modal` | Show a modal instead of a native window when subscribing user to OneSignal | `false` |
|
142
|
+
**`app_id` (required)** Your OneSignal app id. Create one here: https://onesignal.com
|
143
|
+
**`devise_class`** Specify your devise class. Defaults to `'User'`.
|
144
|
+
**`auto_register`** Automatically try to subscribe the user when loading a page. Defaults to `false`.
|
145
|
+
**`persist_notification`** Automatically dismiss the notification after ~20 seconds in Chrome. Defaults to `false`.
|
146
|
+
**`subscribe_with_modal`** Show a modal instead of a native browser window when subscribing a user to OneSignal. Defaults to `false`.
|
126
147
|
|
127
148
|
---
|
128
149
|
|
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require 'bundler
|
2
|
-
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
data/devise-onesignal.gemspec
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path(File.join('..', 'lib', 'devise-onesignal', 'version'),
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = 'devise-onesignal'
|
6
|
-
gem.version =
|
6
|
+
gem.version = DeviseOnesignal::VERSION
|
7
7
|
gem.platform = Gem::Platform::RUBY
|
8
8
|
gem.summary = 'Implement user targeted cross-platform notifications in your Rails app'
|
9
9
|
gem.description = 'Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app.'
|
@@ -21,6 +21,6 @@ Gem::Specification.new do |gem|
|
|
21
21
|
|
22
22
|
gem.add_development_dependency 'bundler', '~> 1.16'
|
23
23
|
gem.add_development_dependency 'rake', '~> 10.0'
|
24
|
-
gem.add_dependency 'rails', '>=
|
24
|
+
gem.add_dependency 'rails', '>= 5.0'
|
25
25
|
gem.add_dependency 'devise', '~> 4.3'
|
26
26
|
end
|
data/lib/devise-onesignal.rb
CHANGED
@@ -1,9 +1,24 @@
|
|
1
1
|
require 'devise-onesignal/version'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeviseOnesignal
|
4
4
|
|
5
5
|
autoload :Configuration, 'devise-onesignal/configuration'
|
6
6
|
|
7
|
+
class << self
|
8
|
+
attr_accessor :configuration
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.configure
|
12
|
+
self.configuration ||= Configuration.new
|
13
|
+
yield configuration
|
14
|
+
end
|
15
|
+
|
16
|
+
autoload :DeviceLib, 'devise-onesignal/device_lib'
|
17
|
+
|
18
|
+
autoload :DeviceConcern, 'devise-onesignal/device_concern'
|
19
|
+
autoload :DeviceHelper, 'devise-onesignal/device_helper'
|
20
|
+
require 'devise-onesignal/railtie'
|
21
|
+
|
7
22
|
class Engine < ::Rails::Engine
|
8
23
|
end
|
9
24
|
|
@@ -1,27 +1,18 @@
|
|
1
|
-
module
|
1
|
+
module DeviseOnesignal
|
2
2
|
class Configuration
|
3
3
|
|
4
|
-
|
4
|
+
attr_accessor :app_id
|
5
|
+
attr_accessor :devise_class
|
6
|
+
attr_accessor :auto_register
|
7
|
+
attr_accessor :persist_notification
|
8
|
+
attr_accessor :subscribe_with_modal
|
5
9
|
|
6
|
-
def
|
7
|
-
|
10
|
+
def initialize
|
11
|
+
@devise_class = 'User'
|
12
|
+
@auto_register = false
|
13
|
+
@persist_notification = false
|
14
|
+
@subscribe_with_modal = false
|
8
15
|
end
|
9
|
-
cattr_writer :devise_class, instance_accessor: false
|
10
|
-
|
11
|
-
def self.auto_register
|
12
|
-
@@auto_register || false
|
13
|
-
end
|
14
|
-
cattr_writer :auto_register, instance_accessor: false
|
15
|
-
|
16
|
-
def self.persist_notification
|
17
|
-
@@persist_notification || false
|
18
|
-
end
|
19
|
-
cattr_writer :persist_notification, instance_accessor: false
|
20
|
-
|
21
|
-
def self.subscribe_with_modal
|
22
|
-
@@subscribe_with_modal || false
|
23
|
-
end
|
24
|
-
cattr_writer :subscribe_with_modal, instance_accessor: false
|
25
16
|
|
26
17
|
end
|
27
18
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module DeviseOnesignal
|
2
|
+
module DeviceConcern
|
3
|
+
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
extend DeviseOnesignal::DeviceHelper
|
7
|
+
|
8
|
+
included do
|
9
|
+
before_action :set_device
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_device
|
15
|
+
unless cookies[:oneSignalUserId].nil?
|
16
|
+
onesignal_user_id = cookies[:oneSignalUserId]
|
17
|
+
device = Device.find_or_create_by! onesignal_id: onesignal_user_id
|
18
|
+
device.user = current_user if current_user
|
19
|
+
device.permission = cookies[:oneSignalUserPermission]
|
20
|
+
device.last_used = Time.now
|
21
|
+
device.save!
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module DeviseOnesignal
|
2
|
+
module DeviceHelper
|
3
|
+
|
4
|
+
def current_device
|
5
|
+
if cookies[:oneSignalUserId].nil?
|
6
|
+
device = Device.new
|
7
|
+
device.user = current_user if current_user
|
8
|
+
device.permission = cookies[:oneSignalUserPermission]
|
9
|
+
device.last_used = Time.now
|
10
|
+
else
|
11
|
+
device = Device.find_by(onesignal_id: cookies[:oneSignalUserId])
|
12
|
+
end
|
13
|
+
device
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module DeviseOnesignal
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
|
6
|
+
initializer 'devise-onesignal.initialize' do
|
7
|
+
abort 'Set your OneSignal app id in `config/initializers/devise-onesignal.rb`' if DeviseOnesignal.configuration && ( DeviseOnesignal.configuration.app_id.nil? || DeviseOnesignal.configuration.app_id == '' )
|
8
|
+
ActiveSupport.on_load :action_controller do
|
9
|
+
include DeviseOnesignal::DeviceConcern
|
10
|
+
end
|
11
|
+
ActiveSupport.on_load :action_view do
|
12
|
+
include DeviseOnesignal::DeviceHelper
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails/generators'
|
2
2
|
require 'rails/generators/migration'
|
3
3
|
|
4
|
-
class
|
4
|
+
class DeviseOnesignalGenerator < Rails::Generators::Base
|
5
5
|
|
6
6
|
include Rails::Generators::Migration
|
7
7
|
|
@@ -12,18 +12,21 @@ class DeviseOneSignalGenerator < Rails::Generators::Base
|
|
12
12
|
if ActiveRecord::Base.timestamped_migrations
|
13
13
|
Time.now.utc.strftime '%Y%m%d%H%M%S'
|
14
14
|
else
|
15
|
-
"%.3d" % (current_migration_number(dirname) + 1)
|
15
|
+
"%.3d" % ( current_migration_number(dirname) + 1 )
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
def create_migration_file
|
20
|
-
migration_template 'migration.rb.erb', 'db/migrate/devise_one_signal_migration.rb', migration_version: migration_version
|
21
|
-
end
|
22
|
-
|
23
19
|
def create_initializer
|
24
20
|
template 'initializer.rb', 'config/initializers/devise-onesignal.rb'
|
25
21
|
end
|
26
22
|
|
23
|
+
def create_device_migration_file
|
24
|
+
migration_template 'devices_migration.rb.erb', 'db/migrate/devise_onesignal_migration.rb', migration_version: migration_version
|
25
|
+
end
|
26
|
+
def create_device_model
|
27
|
+
template 'device_model.rb', 'app/models/device.rb'
|
28
|
+
end
|
29
|
+
|
27
30
|
def show_readme
|
28
31
|
readme 'README.md'
|
29
32
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class DeviseOnesignalMigration < ActiveRecord::Migration<%= migration_version %>
|
2
|
+
def change
|
3
|
+
create_table :devices do |t|
|
4
|
+
|
5
|
+
t.references DeviseOnesignal.configuration.devise_class.downcase.to_sym, index: true
|
6
|
+
|
7
|
+
t.string :onesignal_id, index: true, unique: true
|
8
|
+
t.string :onesignal_permission
|
9
|
+
|
10
|
+
t.datetime :last_used
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1 +1,26 @@
|
|
1
|
-
|
1
|
+
DeviseOnesignal.configure do |config|
|
2
|
+
|
3
|
+
### ONESIGNAL ###
|
4
|
+
|
5
|
+
# Your OneSignal app id. Create one here: https://onesignal.com
|
6
|
+
config.app_id = ''
|
7
|
+
|
8
|
+
|
9
|
+
### DEVISE ###
|
10
|
+
|
11
|
+
# Specify your devise class. Defaults to `'User'`.
|
12
|
+
# config.devise_class = 'User'
|
13
|
+
|
14
|
+
|
15
|
+
### CUSTOMIZATION ###
|
16
|
+
|
17
|
+
# Automatically try to subscribe the user when loading a page. Defaults to `false`.
|
18
|
+
# config.auto_register = false
|
19
|
+
|
20
|
+
# Automatically dismiss the notification after ~20 seconds in Chrome. Defaults to `false`.
|
21
|
+
# config.persist_notification = false
|
22
|
+
|
23
|
+
# Show a modal instead of a native browser window when subscribing a user to OneSignal. Defaults to `false`.
|
24
|
+
# config.subscribe_with_modal = false
|
25
|
+
|
26
|
+
end
|
@@ -8,8 +8,8 @@ function OneSignalInit() {
|
|
8
8
|
// Do NOT call init() twice
|
9
9
|
OneSignal.push([ 'init', {
|
10
10
|
// Your other init options here
|
11
|
-
appId: '<%=
|
12
|
-
autoRegister: <%=
|
11
|
+
appId: '<%= DeviseOnesignal.configuration.app_id %>',
|
12
|
+
autoRegister: <%= DeviseOnesignal.configuration.auto_register ? 'true' : 'false' %>,
|
13
13
|
welcomeNotification: {
|
14
14
|
disable: true,
|
15
15
|
title: '',
|
@@ -18,7 +18,7 @@ function OneSignalInit() {
|
|
18
18
|
notifyButton: {
|
19
19
|
enable: false
|
20
20
|
},
|
21
|
-
persistNotification: <%=
|
21
|
+
persistNotification: <%= DeviseOnesignal.configuration.persist_notification ? 'true' : 'false' %> // Automatically dismiss the notification after ~20 seconds in Chrome Desktop v47+
|
22
22
|
}]);
|
23
23
|
|
24
24
|
// Firstly this will check user id
|
@@ -43,7 +43,7 @@ function OneSignalSubscribe() {
|
|
43
43
|
OneSignal.setSubscription(true);
|
44
44
|
} else {
|
45
45
|
OneSignal.registerForPushNotifications({
|
46
|
-
modalPrompt: <%=
|
46
|
+
modalPrompt: <%= DeviseOnesignal.configuration.subscribe_with_modal ? 'true' : 'false' %>
|
47
47
|
});
|
48
48
|
};
|
49
49
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-onesignal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Hübotter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: devise
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,16 +86,20 @@ files:
|
|
86
86
|
- LICENSE
|
87
87
|
- README.md
|
88
88
|
- Rakefile
|
89
|
-
- app/controllers/concerns/one_signal_user.rb
|
90
89
|
- devise-onesignal.gemspec
|
91
90
|
- init.rb
|
92
91
|
- lib/devise-onesignal.rb
|
93
92
|
- lib/devise-onesignal/configuration.rb
|
93
|
+
- lib/devise-onesignal/device_concern.rb
|
94
|
+
- lib/devise-onesignal/device_helper.rb
|
95
|
+
- lib/devise-onesignal/device_lib.rb
|
96
|
+
- lib/devise-onesignal/railtie.rb
|
94
97
|
- lib/devise-onesignal/version.rb
|
95
|
-
- lib/generators/
|
98
|
+
- lib/generators/devise_onesignal_generator.rb
|
96
99
|
- lib/generators/templates/README.md
|
100
|
+
- lib/generators/templates/device_model.rb
|
101
|
+
- lib/generators/templates/devices_migration.rb.erb
|
97
102
|
- lib/generators/templates/initializer.rb
|
98
|
-
- lib/generators/templates/migration.rb.erb
|
99
103
|
- vendor/assets/javascripts/OneSignalSDK.js
|
100
104
|
- vendor/assets/javascripts/devise-onesignal.js.erb
|
101
105
|
homepage: https://github.com/jonhue/devise-onesignal
|
@@ -109,7 +113,7 @@ post_install_message: |
|
|
109
113
|
There are three wo more steps to take:
|
110
114
|
|
111
115
|
1) Enter your OneSignal App ID in config/initializers/devise-onesignal.rb
|
112
|
-
2) Run `rails g
|
116
|
+
2) Run `rails g devise-onesignal` and `rails db:migrate`
|
113
117
|
3) Add:
|
114
118
|
|
115
119
|
//= require OneSignalSDK
|
@@ -118,7 +122,7 @@ post_install_message: |
|
|
118
122
|
to your javascript index in app/assets/javascripts/application.js
|
119
123
|
|
120
124
|
|
121
|
-
Learn more at https://github.com/jonhue/devise-onesignal
|
125
|
+
Learn more at https://github.com/jonhue/devise-onesignal
|
122
126
|
rdoc_options: []
|
123
127
|
require_paths:
|
124
128
|
- lib
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module OneSignalUser
|
2
|
-
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
before_action :set_onesignal_user
|
7
|
-
helper_method :current_onesignal
|
8
|
-
end
|
9
|
-
|
10
|
-
def current_onesignal
|
11
|
-
current_onesignal = {}
|
12
|
-
current_onesignal[:id] = cookies[:oneSignalUserId]
|
13
|
-
current_onesignal[:permission] = cookies[:oneSignalUserPermission]
|
14
|
-
current_onesignal[DeviseOneSignal::Configuration.devise_class.downcase.to_sym] = DeviseOneSignal::Configuration.devise_class.constantize&.find_by(onesignal_id: current_onesignal[:id]) if cookies.has_key?(:oneSignalUserId)
|
15
|
-
current_onesignal.each do |key, value|
|
16
|
-
current_onesignal.delete(key) if value == nil
|
17
|
-
end
|
18
|
-
current_onesignal
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def set_onesignal_user
|
24
|
-
if current_user
|
25
|
-
onesignal_user_id = cookies[:oneSignalUserId]
|
26
|
-
if onesignal_user_id.nil?
|
27
|
-
current_user.update_attributes onesignal_id: nil, onesignal_permission: nil
|
28
|
-
else
|
29
|
-
current_user.update_attributes onesignal_id: onesignal_user_id, onesignal_permission: cookies[:oneSignalUserPermission]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
@@ -1,6 +0,0 @@
|
|
1
|
-
class DeviseOneSignalMigration < ActiveRecord::Migration<%= migration_version %>
|
2
|
-
def change
|
3
|
-
add_column :<%= DeviseOneSignal::Configuration.devise_class.downcase.pluralize %>, :onesignal_id, :string, index: true, unique: true
|
4
|
-
add_column :<%= DeviseOneSignal::Configuration.devise_class.downcase.pluralize %>, :onesignal_permission, :string
|
5
|
-
end
|
6
|
-
end
|