angular_rails_csrf 3.1.0 → 3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1311f4d0d35684f36871d68eb5e194b470d6a7006f20f9496deea9030cbab954
4
- data.tar.gz: 1813645e16974a0677cd420e91d4114c888777442499fc22c6e104711291eabc
3
+ metadata.gz: 23f8e3de78f91c8563e49d21563888ab0f9c78a42d7cffa09f54c52f24df018f
4
+ data.tar.gz: 23f75e27ec3de7cea6979085ef82eebd2d07e54eb5e83801cfdb9ce40cbdec46
5
5
  SHA512:
6
- metadata.gz: ea948d361d2194b2a5f9551a2f3bcf715914e6db19a963d872581b7f0eaeaed073ea90b7954653ce2d3086d29081b7d8912d112f2df216db5e93a23d0ab55f41
7
- data.tar.gz: 07c516aa3e342cda1cf3b00bbd268b9745c16377e7ee1beae98d3ee02004c5f5455557f62463acd0c1246948336b3b0957c2c3654ce654d3515d189899c8413d
6
+ metadata.gz: d8c1eb3dcb33b1df34435106c723639916a3acb0761b21e3551c15af7fecc19bf0a9debb6d36cdcf8d8f23973e65dd790c2b78e471546862341a7ba0e658d234
7
+ data.tar.gz: 4742c340abc02322ed6cfd5687d77f2461cfbc0b36e3d6c431ac168abad7bb02a893b6a474e019f0b6d6de879cb07564151e0fec53582730eded5798fa88cfd7
data/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/angular_rails_csrf.svg)](https://badge.fury.io/rb/angular_rails_csrf)
4
4
  [![Build Status](https://travis-ci.org/jsanders/angular_rails_csrf.png)](https://travis-ci.org/jsanders/angular_rails_csrf)
5
- [![Dependency Status](https://gemnasium.com/badges/github.com/jsanders/angular_rails_csrf.svg)](https://gemnasium.com/github.com/jsanders/angular_rails_csrf)
6
5
 
7
6
  The AngularJS [ng.$http](http://docs.angularjs.org/api/ng.$http) service has built-in CSRF protection. By default, it looks for a cookie named `XSRF-TOKEN` and, if found, writes its value into an `X-XSRF-TOKEN` header, which the server compares with the CSRF token saved in the user's session.
8
7
 
@@ -25,6 +24,19 @@ And then execute:
25
24
  That's it!
26
25
 
27
26
  ## Configuration
27
+
28
+ ### Cookie Name
29
+
30
+ The default cookie's name is `XSRF-TOKEN` but it can be configured with the `angular_rails_csrf_cookie_name` setting:
31
+
32
+ ```ruby
33
+ # application.rb
34
+ class Application < Rails::Application
35
+ #...
36
+ config.angular_rails_csrf_cookie_name = 'CUSTOM_NAME'
37
+ end
38
+ ```
39
+
28
40
  ### Cookie Domain
29
41
 
30
42
  Starting from version 3, you may set domain for the XSRF cookie:
@@ -67,4 +79,4 @@ $ rake test
67
79
 
68
80
  ## License
69
81
 
70
- Licensed under the [MIT License](https://github.com/jsanders/angular_rails_csrf/blob/master/LICENSE).
82
+ Licensed under the [MIT License](https://github.com/jsanders/angular_rails_csrf/blob/master/LICENSE).
@@ -10,7 +10,8 @@ module AngularRailsCsrf
10
10
  if protect_against_forgery? && !respond_to?(:__exclude_xsrf_token_cookie?)
11
11
  config = Rails.application.config
12
12
  domain = config.respond_to?(:angular_rails_csrf_domain) ? config.angular_rails_csrf_domain : nil
13
- cookies['XSRF-TOKEN'] = { value: form_authenticity_token, domain: domain }
13
+ cookie_name = config.respond_to?(:angular_rails_csrf_cookie_name) ? config.angular_rails_csrf_cookie_name : 'XSRF-TOKEN'
14
+ cookies[cookie_name] = { value: form_authenticity_token, domain: domain }
14
15
  end
15
16
  end
16
17
 
@@ -1,3 +1,3 @@
1
1
  module AngularRailsCsrf
2
- VERSION = '3.1.0'.freeze
2
+ VERSION = '3.2.0'.freeze
3
3
  end
@@ -39,6 +39,15 @@ class AngularRailsCsrfTest < ActionController::TestCase
39
39
  assert_response :success
40
40
  end
41
41
 
42
+ test "a custom name is used if present" do
43
+ use_custom_cookie_name do
44
+ get :index
45
+ assert @response.headers['Set-Cookie'].include?('CUSTOM-COOKIE-NAME')
46
+ assert_valid_cookie('CUSTOM-COOKIE-NAME')
47
+ assert_response :success
48
+ end
49
+ end
50
+
42
51
  private
43
52
 
44
53
  # Helpers
@@ -47,11 +56,19 @@ class AngularRailsCsrfTest < ActionController::TestCase
47
56
  @request.headers['X-XSRF-TOKEN'] = value
48
57
  end
49
58
 
50
- def assert_valid_cookie
59
+ def assert_valid_cookie(name = 'XSRF-TOKEN')
51
60
  if @controller.respond_to?(:valid_authenticity_token?, true)
52
- assert @controller.send(:valid_authenticity_token?, session, cookies['XSRF-TOKEN'])
61
+ assert @controller.send(:valid_authenticity_token?, session, cookies[name])
53
62
  else
54
63
  assert_equal @controller.send(:form_authenticity_token), cookies['XSRF-TOKEN']
55
64
  end
56
65
  end
66
+
67
+ def use_custom_cookie_name
68
+ config = Rails.application.config
69
+ def config.angular_rails_csrf_cookie_name; 'CUSTOM-COOKIE-NAME'; end
70
+ yield
71
+ ensure
72
+ config.instance_eval('undef :angular_rails_csrf_cookie_name')
73
+ end
57
74
  end
@@ -405,3 +405,77 @@ AngularRailsCsrfTest: test_a_post_is_accepted_if_X-XSRF-TOKEN_is_set_properly
405
405
  -----------------------------------------------------------------------------
406
406
  Processing by ApplicationController#create as HTML
407
407
  Completed 200 OK in 0ms
408
+ -------------------------------------------------------------------------------------
409
+ AngularRailsCsrfTest: test_a_post_raises_an_error_without_the_X-XSRF-TOKEN_header_set
410
+ -------------------------------------------------------------------------------------
411
+ Processing by ApplicationController#create as HTML
412
+ Can't verify CSRF token authenticity.
413
+ Completed 422 Unprocessable Entity in 0ms
414
+ --------------------------------------------------------
415
+ AngularRailsCsrfTest: test_the_domain_is_used_if_present
416
+ --------------------------------------------------------
417
+ Processing by ApplicationController#index as HTML
418
+ Completed 200 OK in 0ms
419
+ -----------------------------------------------------------------------------------------------------
420
+ AngularRailsCsrfTest: test_a_post_raises_an_error_with_the_X-XSRF-TOKEN_header_set_to_the_wrong_value
421
+ -----------------------------------------------------------------------------------------------------
422
+ Processing by ApplicationController#create as HTML
423
+ Can't verify CSRF token authenticity.
424
+ Completed 422 Unprocessable Entity in 0ms
425
+ -----------------------------------------------------------
426
+ AngularRailsCsrfTest: test_a_custom_name_is_used_if_present
427
+ -----------------------------------------------------------
428
+ Processing by ApplicationController#index as HTML
429
+ Completed 200 OK in 1ms
430
+ -----------------------------------------------------------------------------
431
+ AngularRailsCsrfTest: test_a_post_is_accepted_if_X-XSRF-TOKEN_is_set_properly
432
+ -----------------------------------------------------------------------------
433
+ Processing by ApplicationController#create as HTML
434
+ Completed 200 OK in 0ms
435
+ --------------------------------------------------------------------------------------------------------
436
+ AngularRailsCsrfTest: test_a_get_sets_the_XSRF-TOKEN_cookie_but_does_not_require_the_X-XSRF-TOKEN_header
437
+ --------------------------------------------------------------------------------------------------------
438
+ Processing by ApplicationController#index as HTML
439
+ Completed 200 OK in 0ms
440
+ ----------------------------------------------------------------------------
441
+ AngularRailsCsrfExceptionTest: test_a_get_does_not_set_the_XSRF-TOKEN_cookie
442
+ ----------------------------------------------------------------------------
443
+ Processing by ExclusionsController#index as HTML
444
+ Completed 200 OK in 0ms
445
+ --------------------------------------------------------------------------------------------------------
446
+ AngularRailsCsrfTest: test_a_get_sets_the_XSRF-TOKEN_cookie_but_does_not_require_the_X-XSRF-TOKEN_header
447
+ --------------------------------------------------------------------------------------------------------
448
+ Processing by ApplicationController#index as HTML
449
+ Completed 200 OK in 0ms
450
+ -----------------------------------------------------------------------------------------------------
451
+ AngularRailsCsrfTest: test_a_post_raises_an_error_with_the_X-XSRF-TOKEN_header_set_to_the_wrong_value
452
+ -----------------------------------------------------------------------------------------------------
453
+ Processing by ApplicationController#create as HTML
454
+ Can't verify CSRF token authenticity.
455
+ Completed 422 Unprocessable Entity in 0ms
456
+ -----------------------------------------------------------------------------
457
+ AngularRailsCsrfTest: test_a_post_is_accepted_if_X-XSRF-TOKEN_is_set_properly
458
+ -----------------------------------------------------------------------------
459
+ Processing by ApplicationController#create as HTML
460
+ Completed 200 OK in 0ms
461
+ -----------------------------------------------------------
462
+ AngularRailsCsrfTest: test_a_custom_name_is_used_if_present
463
+ -----------------------------------------------------------
464
+ Processing by ApplicationController#index as HTML
465
+ Completed 200 OK in 0ms
466
+ --------------------------------------------------------
467
+ AngularRailsCsrfTest: test_the_domain_is_used_if_present
468
+ --------------------------------------------------------
469
+ Processing by ApplicationController#index as HTML
470
+ Completed 200 OK in 0ms
471
+ -------------------------------------------------------------------------------------
472
+ AngularRailsCsrfTest: test_a_post_raises_an_error_without_the_X-XSRF-TOKEN_header_set
473
+ -------------------------------------------------------------------------------------
474
+ Processing by ApplicationController#create as HTML
475
+ Can't verify CSRF token authenticity.
476
+ Completed 422 Unprocessable Entity in 0ms
477
+ ----------------------------------------------------------------------------
478
+ AngularRailsCsrfExceptionTest: test_a_get_does_not_set_the_XSRF-TOKEN_cookie
479
+ ----------------------------------------------------------------------------
480
+ Processing by ExclusionsController#index as HTML
481
+ Completed 200 OK in 0ms
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular_rails_csrf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Sanders
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-10 00:00:00.000000000 Z
12
+ date: 2018-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake