Merge branch 'release/0.7.11.0'
This commit is contained in:
commit
dc7c5ffef6
141 changed files with 1536 additions and 478 deletions
18
.rubocop.yml
18
.rubocop.yml
|
|
@ -18,7 +18,7 @@ Metrics/LineLength:
|
|||
|
||||
# Too short methods lead to extraction of single-use methods, which can make
|
||||
# the code easier to read (by naming things), but can also clutter the class
|
||||
Metrics/MethodLength:
|
||||
Metrics/MethodLength:
|
||||
Max: 20
|
||||
|
||||
# The guiding principle of classes is SRP, SRP can't be accurately measured by LoC
|
||||
|
|
@ -26,11 +26,17 @@ Metrics/ClassLength:
|
|||
Max: 1500
|
||||
Metrics/ModuleLength:
|
||||
Max: 1500
|
||||
|
||||
# Raise AbcSize from 15 to 20
|
||||
|
||||
# Raise complexity metrics
|
||||
Metrics/AbcSize:
|
||||
Max: 20
|
||||
|
||||
Metrics/CyclomaticComplexity:
|
||||
Max: 20
|
||||
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 20
|
||||
|
||||
# Some blocks are longer.
|
||||
Metrics/BlockLength:
|
||||
ExcludedMethods:
|
||||
|
|
@ -88,7 +94,7 @@ Lint/AssignmentInCondition:
|
|||
AllowSafeAssignment: false
|
||||
|
||||
# A specialized exception class will take one or more arguments and construct the message from it.
|
||||
# So both variants make sense.
|
||||
# So both variants make sense.
|
||||
Style/RaiseArgs:
|
||||
Enabled: false
|
||||
|
||||
|
|
@ -151,11 +157,11 @@ Lint/ShadowingOuterLocalVariable:
|
|||
|
||||
# Check with yard instead.
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
Enabled: false
|
||||
|
||||
# This is just silly. Calling the argument `other` in all cases makes no sense.
|
||||
Naming/BinaryOperatorParameterName:
|
||||
Enabled: false
|
||||
Enabled: false
|
||||
|
||||
# There are valid cases, for example debugging Cucumber steps,
|
||||
# also they'll fail CI anyway
|
||||
|
|
|
|||
14
Changelog.md
14
Changelog.md
|
|
@ -1,3 +1,17 @@
|
|||
# 0.7.11.0
|
||||
|
||||
## Refactor
|
||||
* Enable paranoid mode for devise [#8003](https://github.com/diaspora/diaspora/pull/8003)
|
||||
* Refactor likes cucumber test [#8002](https://github.com/diaspora/diaspora/pull/8002)
|
||||
|
||||
## Bug fixes
|
||||
* Fix old photos without remote url for export [#8012](https://github.com/diaspora/diaspora/pull/8012)
|
||||
|
||||
## Features
|
||||
* Add a manifest.json file as a first step to make diaspora\* a Progressive Web App [#7998](https://github.com/diaspora/diaspora/pull/7998)
|
||||
* Allow `web+diaspora://` links to link to a profile with only the diaspora ID [#8000](https://github.com/diaspora/diaspora/pull/8000)
|
||||
* Support TOTP two factor authentication [#7751](https://github.com/diaspora/diaspora/pull/7751)
|
||||
|
||||
# 0.7.10.0
|
||||
|
||||
## Refactor
|
||||
|
|
|
|||
70
Gemfile
70
Gemfile
|
|
@ -2,32 +2,34 @@
|
|||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "rails", "5.1.6"
|
||||
gem "rails", "5.1.6.2"
|
||||
|
||||
# Legacy Rails features, remove me!
|
||||
# responders (class level)
|
||||
gem "responders", "2.4.0"
|
||||
gem "responders", "2.4.1"
|
||||
|
||||
# Appserver
|
||||
|
||||
gem "unicorn", "5.4.1", require: false
|
||||
gem "unicorn", "5.5.0", require: false
|
||||
gem "unicorn-worker-killer", "0.4.4"
|
||||
|
||||
# Federation
|
||||
|
||||
gem "diaspora_federation-json_schema", "0.2.5"
|
||||
gem "diaspora_federation-rails", "0.2.5"
|
||||
gem "diaspora_federation-json_schema", "0.2.6"
|
||||
gem "diaspora_federation-rails", "0.2.6"
|
||||
|
||||
# API and JSON
|
||||
|
||||
gem "acts_as_api", "1.0.1"
|
||||
gem "json", "2.1.0"
|
||||
gem "json", "2.2.0"
|
||||
gem "json-schema", "2.8.1"
|
||||
|
||||
# Authentication
|
||||
|
||||
gem "devise", "4.5.0"
|
||||
gem "devise", "4.6.1"
|
||||
gem "devise-two-factor", "3.0.3"
|
||||
gem "devise_lastseenable", "0.0.6"
|
||||
gem "rqrcode", "0.10.1"
|
||||
|
||||
# Captcha
|
||||
|
||||
|
|
@ -36,15 +38,15 @@ gem "simple_captcha2", "0.4.3", require: "simple_captcha"
|
|||
# Background processing
|
||||
|
||||
gem "redis", "3.3.5" # Pinned to 3.3.x because of https://github.com/antirez/redis/issues/4272
|
||||
gem "sidekiq", "5.2.3"
|
||||
gem "sidekiq", "5.2.5"
|
||||
|
||||
# Scheduled processing
|
||||
|
||||
gem "sidekiq-cron", "1.0.4"
|
||||
gem "sidekiq-cron", "1.1.0"
|
||||
|
||||
# Compression
|
||||
|
||||
gem "uglifier", "4.1.19"
|
||||
gem "uglifier", "4.1.20"
|
||||
|
||||
# Configuration
|
||||
|
||||
|
|
@ -57,7 +59,7 @@ gem "rack-cors", "1.0.2", require: "rack/cors"
|
|||
# CSS
|
||||
|
||||
gem "autoprefixer-rails", "8.6.5"
|
||||
gem "bootstrap-sass", "3.3.7"
|
||||
gem "bootstrap-sass", "3.4.1"
|
||||
gem "bootstrap-switch-rails", "3.3.3" # 3.3.4 is broken, see https://github.com/Bttstrp/bootstrap-switch/issues/691
|
||||
gem "compass-rails", "3.1.0"
|
||||
gem "sass-rails", "5.0.7"
|
||||
|
|
@ -69,17 +71,17 @@ group :mysql, optional: true do
|
|||
gem "mysql2", "0.5.2"
|
||||
end
|
||||
group :postgresql, optional: true do
|
||||
gem "pg", "1.1.3"
|
||||
gem "pg", "1.1.4"
|
||||
end
|
||||
|
||||
|
||||
gem "activerecord-import", "0.27.0"
|
||||
gem "activerecord-import", "1.0.1"
|
||||
|
||||
# File uploading
|
||||
|
||||
gem "carrierwave", "1.2.3"
|
||||
gem "fog-aws", "3.3.0"
|
||||
gem "mini_magick", "4.9.2"
|
||||
gem "carrierwave", "1.3.1"
|
||||
gem "fog-aws", "3.4.0"
|
||||
gem "mini_magick", "4.9.3"
|
||||
|
||||
# GUID generation
|
||||
gem "uuid", "2.3.9"
|
||||
|
|
@ -90,7 +92,7 @@ gem "entypo-rails", "3.0.0"
|
|||
|
||||
# JavaScript
|
||||
|
||||
gem "handlebars_assets", "0.23.2"
|
||||
gem "handlebars_assets", "0.23.3"
|
||||
gem "jquery-rails", "4.3.3"
|
||||
gem "js-routes", "1.4.4"
|
||||
gem "js_image_paths", "0.1.1"
|
||||
|
|
@ -129,7 +131,7 @@ gem "markdown-it-html5-embed", "1.0.0"
|
|||
|
||||
gem "http_accept_language", "2.1.1"
|
||||
gem "i18n-inflector-rails", "1.0.7"
|
||||
gem "rails-i18n", "5.1.2"
|
||||
gem "rails-i18n", "5.1.3"
|
||||
|
||||
# Mail
|
||||
|
||||
|
|
@ -140,7 +142,7 @@ gem "leaflet-rails", "1.3.1"
|
|||
|
||||
# Parsing
|
||||
|
||||
gem "nokogiri", "1.8.5"
|
||||
gem "nokogiri", "1.10.1"
|
||||
gem "open_graph_reader", "0.6.2" # also update User-Agent in features/support/webmock.rb
|
||||
gem "redcarpet", "3.4.0"
|
||||
gem "ruby-oembed", "0.12.0"
|
||||
|
|
@ -152,11 +154,11 @@ gem "string-direction", "1.2.1"
|
|||
|
||||
# Security Headers
|
||||
|
||||
gem "secure_headers", "6.0.0"
|
||||
gem "secure_headers", "6.1.0"
|
||||
|
||||
# Services
|
||||
|
||||
gem "omniauth", "1.8.1"
|
||||
gem "omniauth", "1.9.0"
|
||||
gem "omniauth-tumblr", "1.2"
|
||||
gem "omniauth-twitter", "1.4.0"
|
||||
gem "omniauth-wordpress", "0.2.2"
|
||||
|
|
@ -180,7 +182,7 @@ gem "acts-as-taggable-on", "6.0.0"
|
|||
# URIs and HTTP
|
||||
|
||||
gem "addressable", "2.5.2", require: "addressable/uri"
|
||||
gem "faraday", "0.15.3"
|
||||
gem "faraday", "0.15.4"
|
||||
gem "faraday_middleware", "0.12.2"
|
||||
gem "faraday-cookie_jar", "0.0.6"
|
||||
gem "typhoeus", "1.3.1"
|
||||
|
|
@ -188,10 +190,10 @@ gem "typhoeus", "1.3.1"
|
|||
# Views
|
||||
|
||||
gem "gon", "6.2.1"
|
||||
gem "hamlit", "2.9.1"
|
||||
gem "hamlit", "2.9.2"
|
||||
gem "mobile-fu", "1.4.0"
|
||||
gem "rails-timeago", "2.16.0"
|
||||
gem "will_paginate", "3.1.6"
|
||||
gem "rails-timeago", "2.17.1"
|
||||
gem "will_paginate", "3.1.7"
|
||||
|
||||
# Logging
|
||||
|
||||
|
|
@ -234,7 +236,7 @@ group :production do # we don"t install these on travis to speed up test runs
|
|||
|
||||
# Third party asset hosting
|
||||
|
||||
gem "asset_sync", "2.5.0", require: false
|
||||
gem "asset_sync", "2.7.0", require: false
|
||||
end
|
||||
|
||||
group :development do
|
||||
|
|
@ -243,7 +245,7 @@ group :development do
|
|||
gem "guard-rspec", "4.7.3", require: false
|
||||
gem "guard-rubocop", "1.3.0", require: false
|
||||
gem "rb-fsevent", "0.10.3", require: false
|
||||
gem "rb-inotify", "0.9.10", require: false
|
||||
gem "rb-inotify", "0.10.0", require: false
|
||||
|
||||
# Linters
|
||||
gem "haml_lint", "0.28.0", require: false
|
||||
|
|
@ -252,7 +254,7 @@ group :development do
|
|||
gem "pronto-haml", "0.9.0", require: false
|
||||
gem "pronto-rubocop", "0.9.1", require: false
|
||||
gem "pronto-scss", "0.9.1", require: false
|
||||
gem "rubocop", "0.60.0", require: false
|
||||
gem "rubocop", "0.66.0", require: false
|
||||
|
||||
# Preloading environment
|
||||
|
||||
|
|
@ -280,7 +282,7 @@ group :test do
|
|||
|
||||
# Cucumber (integration tests)
|
||||
|
||||
gem "capybara", "3.11.1"
|
||||
gem "capybara", "3.15.0"
|
||||
gem "database_cleaner", "1.7.0"
|
||||
gem "poltergeist", "1.18.1"
|
||||
|
||||
|
|
@ -289,11 +291,11 @@ group :test do
|
|||
# General helpers
|
||||
|
||||
gem "factory_girl_rails", "4.8.0"
|
||||
gem "shoulda-matchers", "3.1.2"
|
||||
gem "shoulda-matchers", "4.0.1"
|
||||
gem "timecop", "0.9.1"
|
||||
gem "webmock", "3.4.2", require: false
|
||||
gem "webmock", "3.5.1", require: false
|
||||
|
||||
gem "diaspora_federation-test", "0.2.5"
|
||||
gem "diaspora_federation-test", "0.2.6"
|
||||
|
||||
# Coverage
|
||||
gem "coveralls", "0.8.22", require: false
|
||||
|
|
@ -301,7 +303,7 @@ end
|
|||
|
||||
group :development, :test do
|
||||
# RSpec (unit tests, some integration tests)
|
||||
gem "rspec-rails", "3.8.1"
|
||||
gem "rspec-rails", "3.8.2"
|
||||
|
||||
# Cucumber (integration tests)
|
||||
gem "cucumber-rails", "1.6.0", require: false
|
||||
|
|
@ -313,5 +315,5 @@ group :development, :test do
|
|||
gem "sinon-rails", "1.15.0"
|
||||
|
||||
# For `assigns` in controller specs
|
||||
gem "rails-controller-testing", "1.0.2"
|
||||
gem "rails-controller-testing", "1.0.4"
|
||||
end
|
||||
|
|
|
|||
338
Gemfile.lock
338
Gemfile.lock
|
|
@ -2,25 +2,25 @@ GEM
|
|||
remote: https://rubygems.org/
|
||||
remote: https://rails-assets.org/
|
||||
specs:
|
||||
actioncable (5.1.6)
|
||||
actionpack (= 5.1.6)
|
||||
actioncable (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.1.6)
|
||||
actionpack (= 5.1.6)
|
||||
actionview (= 5.1.6)
|
||||
activejob (= 5.1.6)
|
||||
actionmailer (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
actionview (= 5.1.6.2)
|
||||
activejob (= 5.1.6.2)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.1.6)
|
||||
actionview (= 5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
actionpack (5.1.6.2)
|
||||
actionview (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
rack (~> 2.0)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
actionview (5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
|
|
@ -28,18 +28,18 @@ GEM
|
|||
active_model_serializers (0.9.7)
|
||||
activemodel (>= 3.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
activejob (5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
activejob (5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
activerecord (5.1.6)
|
||||
activemodel (= 5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
activemodel (5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
activerecord (5.1.6.2)
|
||||
activemodel (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
arel (~> 8.0)
|
||||
activerecord-import (0.27.0)
|
||||
activerecord-import (1.0.1)
|
||||
activerecord (>= 3.2)
|
||||
activesupport (5.1.6)
|
||||
activesupport (5.1.6.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
|
|
@ -54,26 +54,28 @@ GEM
|
|||
public_suffix (>= 2.0.2, < 4.0)
|
||||
aes_key_wrap (1.0.1)
|
||||
arel (8.0.0)
|
||||
asset_sync (2.5.0)
|
||||
asset_sync (2.7.0)
|
||||
activemodel (>= 4.1.0)
|
||||
fog-core
|
||||
mime-types (>= 2.99)
|
||||
unf
|
||||
ast (2.4.0)
|
||||
attr_encrypted (3.1.0)
|
||||
encryptor (~> 3.0.0)
|
||||
attr_required (1.0.1)
|
||||
autoprefixer-rails (8.6.5)
|
||||
execjs
|
||||
backports (3.11.4)
|
||||
backports (3.12.0)
|
||||
bcrypt (3.1.12)
|
||||
bindata (2.4.4)
|
||||
bootstrap-sass (3.3.7)
|
||||
bootstrap-sass (3.4.1)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
sass (>= 3.3.4)
|
||||
sassc (>= 2.0.0)
|
||||
bootstrap-switch-rails (3.3.3)
|
||||
buftok (0.2.0)
|
||||
builder (3.2.3)
|
||||
byebug (10.0.2)
|
||||
capybara (3.11.1)
|
||||
byebug (11.0.1)
|
||||
capybara (3.15.0)
|
||||
addressable
|
||||
mini_mime (>= 0.1.3)
|
||||
nokogiri (~> 1.8)
|
||||
|
|
@ -81,11 +83,11 @@ GEM
|
|||
rack-test (>= 0.6.3)
|
||||
regexp_parser (~> 1.2)
|
||||
xpath (~> 3.2)
|
||||
carrierwave (1.2.3)
|
||||
carrierwave (1.3.1)
|
||||
activemodel (>= 4.0.0)
|
||||
activesupport (>= 4.0.0)
|
||||
mime-types (>= 1.16)
|
||||
celluloid (0.17.3)
|
||||
celluloid (0.17.4)
|
||||
celluloid-essentials
|
||||
celluloid-extras
|
||||
celluloid-fsm
|
||||
|
|
@ -106,7 +108,7 @@ GEM
|
|||
timers (>= 4.1.1)
|
||||
celluloid-supervision (0.20.6)
|
||||
timers (>= 4.1.1)
|
||||
chunky_png (1.3.10)
|
||||
chunky_png (1.3.11)
|
||||
cliver (0.3.2)
|
||||
coderay (1.1.2)
|
||||
compass (1.0.3)
|
||||
|
|
@ -125,7 +127,7 @@ GEM
|
|||
compass (~> 1.0.0)
|
||||
sass-rails (< 5.1)
|
||||
sprockets (< 4.0)
|
||||
concurrent-ruby (1.1.3)
|
||||
concurrent-ruby (1.1.5)
|
||||
configurate (0.3.1)
|
||||
connection_pool (2.2.2)
|
||||
coveralls (0.8.22)
|
||||
|
|
@ -163,45 +165,52 @@ GEM
|
|||
cucumber-tag_expressions (1.1.1)
|
||||
cucumber-wire (0.0.1)
|
||||
database_cleaner (1.7.0)
|
||||
devise (4.5.0)
|
||||
devise (4.6.1)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 4.1.0, < 6.0)
|
||||
responders
|
||||
warden (~> 1.2.3)
|
||||
devise-two-factor (3.0.3)
|
||||
activesupport (< 5.3)
|
||||
attr_encrypted (>= 1.3, < 4, != 2)
|
||||
devise (~> 4.0)
|
||||
railties (< 5.3)
|
||||
rotp (~> 2.0)
|
||||
devise_lastseenable (0.0.6)
|
||||
devise
|
||||
rails (>= 3.0.4)
|
||||
diaspora-prosody-config (0.0.7)
|
||||
diaspora_federation (0.2.5)
|
||||
diaspora_federation (0.2.6)
|
||||
faraday (>= 0.9.0, < 0.16.0)
|
||||
faraday_middleware (>= 0.10.0, < 0.13.0)
|
||||
faraday_middleware (>= 0.10.0, < 0.14.0)
|
||||
nokogiri (~> 1.6, >= 1.6.8)
|
||||
typhoeus (~> 1.0)
|
||||
valid (~> 1.0)
|
||||
diaspora_federation-json_schema (0.2.5)
|
||||
diaspora_federation-rails (0.2.5)
|
||||
diaspora_federation-json_schema (0.2.6)
|
||||
diaspora_federation-rails (0.2.6)
|
||||
actionpack (>= 4.2, < 6)
|
||||
diaspora_federation (= 0.2.5)
|
||||
diaspora_federation-test (0.2.5)
|
||||
diaspora_federation (= 0.2.5)
|
||||
diaspora_federation (= 0.2.6)
|
||||
diaspora_federation-test (0.2.6)
|
||||
diaspora_federation (= 0.2.6)
|
||||
fabrication (~> 2.16)
|
||||
uuid (~> 2.3, >= 2.3.8)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.1)
|
||||
domain_name (0.5.20180417)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
encryptor (3.0.0)
|
||||
entypo-rails (3.0.0)
|
||||
railties (>= 4.1, < 6)
|
||||
equalizer (0.0.11)
|
||||
erubi (1.7.1)
|
||||
erubi (1.8.0)
|
||||
eslintrb (2.1.0)
|
||||
execjs
|
||||
multi_json (>= 1.3)
|
||||
rake
|
||||
et-orbi (1.1.6)
|
||||
et-orbi (1.1.7)
|
||||
tzinfo
|
||||
ethon (0.11.0)
|
||||
ethon (0.12.0)
|
||||
ffi (>= 1.3.0)
|
||||
excon (0.62.0)
|
||||
execjs (2.7.0)
|
||||
|
|
@ -217,19 +226,19 @@ GEM
|
|||
factory_girl_rails (4.8.0)
|
||||
factory_girl (~> 4.8.0)
|
||||
railties (>= 3.0.0)
|
||||
faraday (0.15.3)
|
||||
faraday (0.15.4)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-cookie_jar (0.0.6)
|
||||
faraday (>= 0.7.4)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday_middleware (0.12.2)
|
||||
faraday (>= 0.7.4, < 1.0)
|
||||
ffi (1.9.25)
|
||||
ffi (1.10.0)
|
||||
fixture_builder (0.5.2.rc3)
|
||||
activerecord (>= 2)
|
||||
activesupport (>= 2)
|
||||
hashdiff
|
||||
fog-aws (3.3.0)
|
||||
fog-aws (3.4.0)
|
||||
fog-core (~> 2.1)
|
||||
fog-json (~> 1.1)
|
||||
fog-xml (~> 0.1)
|
||||
|
|
@ -246,18 +255,18 @@ GEM
|
|||
fog-core
|
||||
nokogiri (>= 1.5.11, < 2.0.0)
|
||||
formatador (0.2.5)
|
||||
fugit (1.1.6)
|
||||
et-orbi (~> 1.1, >= 1.1.6)
|
||||
fugit (1.1.8)
|
||||
et-orbi (~> 1.1, >= 1.1.7)
|
||||
raabro (~> 1.1)
|
||||
fuubar (2.3.2)
|
||||
rspec-core (~> 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
get_process_mem (0.2.3)
|
||||
gherkin (5.1.0)
|
||||
gitlab (4.7.0)
|
||||
httparty (>= 0.14.0)
|
||||
terminal-table (>= 1.5.1)
|
||||
globalid (0.4.1)
|
||||
gitlab (4.10.0)
|
||||
httparty (~> 0.14, >= 0.14.0)
|
||||
terminal-table (~> 1.5, >= 1.5.1)
|
||||
globalid (0.4.2)
|
||||
activesupport (>= 4.2.0)
|
||||
gon (6.2.1)
|
||||
actionpack (>= 3.0)
|
||||
|
|
@ -289,16 +298,16 @@ GEM
|
|||
rake (>= 10, < 13)
|
||||
rubocop (>= 0.50.0)
|
||||
sysexits (~> 1.1)
|
||||
hamlit (2.9.1)
|
||||
hamlit (2.9.2)
|
||||
temple (>= 0.8.0)
|
||||
thor
|
||||
tilt
|
||||
handlebars_assets (0.23.2)
|
||||
handlebars_assets (0.23.3)
|
||||
execjs (~> 2.0)
|
||||
sprockets (>= 2.0.0)
|
||||
tilt (>= 1.2)
|
||||
hashdiff (0.3.7)
|
||||
hashie (3.5.7)
|
||||
hashdiff (0.3.8)
|
||||
hashie (3.6.0)
|
||||
http (3.3.0)
|
||||
addressable (~> 2.3)
|
||||
http-cookie (~> 1.0)
|
||||
|
|
@ -309,11 +318,11 @@ GEM
|
|||
http-form_data (2.1.1)
|
||||
http_accept_language (2.1.1)
|
||||
http_parser.rb (0.6.0)
|
||||
httparty (0.16.3)
|
||||
httparty (0.16.4)
|
||||
mime-types (~> 3.0)
|
||||
multi_xml (>= 0.5.2)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.1.1)
|
||||
i18n (1.6.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
i18n-inflector (2.6.7)
|
||||
i18n (>= 0.4.1)
|
||||
|
|
@ -322,7 +331,7 @@ GEM
|
|||
i18n-inflector (~> 2.6)
|
||||
railties (>= 3.0.0)
|
||||
ipaddress (0.8.3)
|
||||
jaro_winkler (1.5.1)
|
||||
jaro_winkler (1.5.2)
|
||||
jasmine (3.3.0)
|
||||
jasmine-core (~> 3.3.0)
|
||||
phantomjs
|
||||
|
|
@ -340,9 +349,9 @@ GEM
|
|||
js_image_paths (0.1.1)
|
||||
rails (>= 4.0, < 6.0)
|
||||
sprockets (>= 3.0.0)
|
||||
json (2.1.0)
|
||||
json-jwt (1.9.4)
|
||||
activesupport
|
||||
json (2.2.0)
|
||||
json-jwt (1.10.0)
|
||||
activesupport (>= 4.2)
|
||||
aes_key_wrap
|
||||
bindata
|
||||
json-schema (2.8.1)
|
||||
|
|
@ -350,12 +359,12 @@ GEM
|
|||
json-schema-rspec (0.0.4)
|
||||
json-schema (~> 2.5)
|
||||
rspec
|
||||
jsonpath (0.9.6)
|
||||
jsonpath (1.0.1)
|
||||
multi_json
|
||||
to_regexp (~> 0.2.1)
|
||||
jwt (2.1.0)
|
||||
kgio (2.11.2)
|
||||
kostya-sigar (2.0.4)
|
||||
kostya-sigar (2.0.6)
|
||||
leaflet-rails (1.3.1)
|
||||
rails (>= 4.2.0)
|
||||
listen (3.1.5)
|
||||
|
|
@ -384,9 +393,9 @@ GEM
|
|||
mime-types (3.2.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2018.0812)
|
||||
mini_magick (4.9.2)
|
||||
mini_magick (4.9.3)
|
||||
mini_mime (1.0.1)
|
||||
mini_portile2 (2.3.0)
|
||||
mini_portile2 (2.4.0)
|
||||
minitest (5.11.3)
|
||||
mobile-fu (1.4.0)
|
||||
rack-mobile-detect
|
||||
|
|
@ -399,8 +408,8 @@ GEM
|
|||
naught (1.1.0)
|
||||
nenv (0.3.0)
|
||||
nio4r (2.3.1)
|
||||
nokogiri (1.8.5)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
nokogiri (1.10.1)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
notiffany (0.1.1)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
|
|
@ -413,15 +422,15 @@ GEM
|
|||
rack (>= 1.2, < 3)
|
||||
octokit (4.13.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
omniauth (1.8.1)
|
||||
hashie (>= 3.4.6, < 3.6.0)
|
||||
omniauth (1.9.0)
|
||||
hashie (>= 3.4.6, < 3.7.0)
|
||||
rack (>= 1.6.2, < 3)
|
||||
omniauth-oauth (1.1.0)
|
||||
oauth
|
||||
omniauth (~> 1.0)
|
||||
omniauth-oauth2 (1.5.0)
|
||||
omniauth-oauth2 (1.6.0)
|
||||
oauth2 (~> 1.1)
|
||||
omniauth (~> 1.2)
|
||||
omniauth (~> 1.9)
|
||||
omniauth-tumblr (1.2)
|
||||
multi_json
|
||||
omniauth-oauth (~> 1.0)
|
||||
|
|
@ -444,16 +453,15 @@ GEM
|
|||
validate_url
|
||||
webfinger (>= 1.0.1)
|
||||
orm_adapter (0.5.0)
|
||||
parallel (1.12.1)
|
||||
parser (2.5.3.0)
|
||||
parallel (1.14.0)
|
||||
parser (2.6.2.0)
|
||||
ast (~> 2.4.0)
|
||||
pg (1.1.3)
|
||||
pg (1.1.4)
|
||||
phantomjs (2.1.1.0)
|
||||
poltergeist (1.18.1)
|
||||
capybara (>= 2.1, < 4)
|
||||
cliver (~> 0.3.1)
|
||||
websocket-driver (>= 0.2.0)
|
||||
powerpack (0.1.2)
|
||||
pronto (0.9.5)
|
||||
gitlab (~> 4.0, >= 4.0.0)
|
||||
httparty (>= 0.13.7)
|
||||
|
|
@ -476,9 +484,10 @@ GEM
|
|||
pry (0.12.2)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.9.0)
|
||||
pry-byebug (3.6.0)
|
||||
byebug (~> 10.0)
|
||||
pry-byebug (3.7.0)
|
||||
byebug (~> 11.0)
|
||||
pry (~> 0.10)
|
||||
psych (3.1.0)
|
||||
public_suffix (3.0.3)
|
||||
raabro (1.1.6)
|
||||
rack (2.0.6)
|
||||
|
|
@ -495,24 +504,24 @@ GEM
|
|||
json-jwt (>= 1.9.0)
|
||||
rack
|
||||
rack-piwik (0.3.0)
|
||||
rack-protection (2.0.4)
|
||||
rack-protection (2.0.5)
|
||||
rack
|
||||
rack-rewrite (1.5.1)
|
||||
rack-ssl (1.4.1)
|
||||
rack
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
rails (5.1.6)
|
||||
actioncable (= 5.1.6)
|
||||
actionmailer (= 5.1.6)
|
||||
actionpack (= 5.1.6)
|
||||
actionview (= 5.1.6)
|
||||
activejob (= 5.1.6)
|
||||
activemodel (= 5.1.6)
|
||||
activerecord (= 5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
rails (5.1.6.2)
|
||||
actioncable (= 5.1.6.2)
|
||||
actionmailer (= 5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
actionview (= 5.1.6.2)
|
||||
activejob (= 5.1.6.2)
|
||||
activemodel (= 5.1.6.2)
|
||||
activerecord (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.1.6)
|
||||
railties (= 5.1.6.2)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-assets-autosize (4.0.2)
|
||||
rails-assets-backbone (1.3.3)
|
||||
|
|
@ -560,42 +569,45 @@ GEM
|
|||
rails-assets-markdown-it-sup (1.0.0)
|
||||
rails-assets-underscore (1.9.1)
|
||||
rails-assets-utatti-perfect-scrollbar (1.4.0)
|
||||
rails-controller-testing (1.0.2)
|
||||
actionpack (~> 5.x, >= 5.0.1)
|
||||
actionview (~> 5.x, >= 5.0.1)
|
||||
activesupport (~> 5.x)
|
||||
rails-controller-testing (1.0.4)
|
||||
actionpack (>= 5.0.1.x)
|
||||
actionview (>= 5.0.1.x)
|
||||
activesupport (>= 5.0.1.x)
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.0.4)
|
||||
loofah (~> 2.2, >= 2.2.2)
|
||||
rails-i18n (5.1.2)
|
||||
rails-i18n (5.1.3)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 5.0, < 6)
|
||||
rails-timeago (2.16.0)
|
||||
rails-timeago (2.17.1)
|
||||
actionpack (>= 3.1)
|
||||
activesupport (>= 3.1)
|
||||
railties (5.1.6)
|
||||
actionpack (= 5.1.6)
|
||||
activesupport (= 5.1.6)
|
||||
railties (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rainbow (2.2.2)
|
||||
rake
|
||||
raindrops (0.19.0)
|
||||
rake (12.3.1)
|
||||
rake (12.3.2)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.9.10)
|
||||
ffi (>= 0.5.0, < 2)
|
||||
rb-inotify (0.10.0)
|
||||
ffi (~> 1.0)
|
||||
redcarpet (3.4.0)
|
||||
redis (3.3.5)
|
||||
regexp_parser (1.3.0)
|
||||
request_store (1.4.1)
|
||||
rack (>= 1.4)
|
||||
responders (2.4.0)
|
||||
actionpack (>= 4.2.0, < 5.3)
|
||||
railties (>= 4.2.0, < 5.3)
|
||||
responders (2.4.1)
|
||||
actionpack (>= 4.2.0, < 6.0)
|
||||
railties (>= 4.2.0, < 6.0)
|
||||
rotp (2.1.2)
|
||||
rqrcode (0.10.1)
|
||||
chunky_png (~> 1.0)
|
||||
rspec (3.8.0)
|
||||
rspec-core (~> 3.8.0)
|
||||
rspec-expectations (~> 3.8.0)
|
||||
|
|
@ -609,7 +621,7 @@ GEM
|
|||
rspec-mocks (3.8.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-rails (3.8.1)
|
||||
rspec-rails (3.8.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
|
|
@ -618,20 +630,20 @@ GEM
|
|||
rspec-mocks (~> 3.8.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-support (3.8.0)
|
||||
rubocop (0.60.0)
|
||||
rubocop (0.66.0)
|
||||
jaro_winkler (~> 1.5.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.5, != 2.5.1.1)
|
||||
powerpack (~> 0.1)
|
||||
psych (>= 3.1.0)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (~> 1.4.0)
|
||||
unicode-display_width (>= 1.4.0, < 1.6)
|
||||
ruby-oembed (0.12.0)
|
||||
ruby-progressbar (1.10.0)
|
||||
ruby_dep (1.5.0)
|
||||
rubyzip (1.2.2)
|
||||
rugged (0.27.5)
|
||||
safe_yaml (1.0.4)
|
||||
rugged (0.28.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-rails (5.0.7)
|
||||
railties (>= 4.0.0, < 6)
|
||||
|
|
@ -639,21 +651,25 @@ GEM
|
|||
sprockets (>= 2.8, < 4.0)
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
tilt (>= 1.1, < 3)
|
||||
sassc (2.0.1)
|
||||
ffi (~> 1.9)
|
||||
rake
|
||||
sawyer (0.8.1)
|
||||
addressable (>= 2.3.5, < 2.6)
|
||||
faraday (~> 0.8, < 1.0)
|
||||
scss_lint (0.55.0)
|
||||
rake (>= 0.9, < 13)
|
||||
sass (~> 3.4.20)
|
||||
secure_headers (6.0.0)
|
||||
secure_headers (6.1.0)
|
||||
shellany (0.0.1)
|
||||
shoulda-matchers (3.1.2)
|
||||
activesupport (>= 4.0.0)
|
||||
sidekiq (5.2.3)
|
||||
shoulda-matchers (4.0.1)
|
||||
activesupport (>= 4.2.0)
|
||||
sidekiq (5.2.5)
|
||||
connection_pool (~> 2.2, >= 2.2.2)
|
||||
rack (>= 1.5.0)
|
||||
rack-protection (>= 1.5.0)
|
||||
redis (>= 3.3.5, < 5)
|
||||
sidekiq-cron (1.0.4)
|
||||
sidekiq-cron (1.1.0)
|
||||
fugit (~> 1.1)
|
||||
sidekiq (>= 4.2.1)
|
||||
simple_captcha2 (0.4.3)
|
||||
|
|
@ -687,16 +703,16 @@ GEM
|
|||
httpclient (>= 2.4)
|
||||
sysexits (1.2.0)
|
||||
systemu (2.6.5)
|
||||
temple (0.8.0)
|
||||
term-ansicolor (1.7.0)
|
||||
temple (0.8.1)
|
||||
term-ansicolor (1.7.1)
|
||||
tins (~> 1.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thor (0.19.4)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.8)
|
||||
tilt (2.0.9)
|
||||
timecop (0.9.1)
|
||||
timers (4.2.0)
|
||||
timers (4.3.0)
|
||||
tins (1.20.2)
|
||||
to_regexp (0.2.1)
|
||||
turbo_dev_assets (0.0.2)
|
||||
|
|
@ -717,13 +733,13 @@ GEM
|
|||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (4.1.19)
|
||||
uglifier (4.1.20)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.5)
|
||||
unicode-display_width (1.4.0)
|
||||
unicorn (5.4.1)
|
||||
unicode-display_width (1.5.0)
|
||||
unicorn (5.5.0)
|
||||
kgio (~> 2.6)
|
||||
raindrops (~> 0.7)
|
||||
unicorn-worker-killer (0.4.4)
|
||||
|
|
@ -735,9 +751,9 @@ GEM
|
|||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
validate_url (1.0.2)
|
||||
validate_url (1.0.6)
|
||||
activemodel (>= 3.0.0)
|
||||
addressable
|
||||
public_suffix
|
||||
versionist (1.7.0)
|
||||
activesupport (>= 3)
|
||||
railties (>= 3)
|
||||
|
|
@ -747,61 +763,62 @@ GEM
|
|||
webfinger (1.1.0)
|
||||
activesupport
|
||||
httpclient (>= 2.4)
|
||||
webmock (3.4.2)
|
||||
webmock (3.5.1)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.3)
|
||||
will_paginate (3.1.6)
|
||||
will_paginate (3.1.7)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
yard (0.9.16)
|
||||
yard (0.9.18)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
active_model_serializers (= 0.9.7)
|
||||
activerecord-import (= 0.27.0)
|
||||
activerecord-import (= 1.0.1)
|
||||
acts-as-taggable-on (= 6.0.0)
|
||||
acts_as_api (= 1.0.1)
|
||||
addressable (= 2.5.2)
|
||||
asset_sync (= 2.5.0)
|
||||
asset_sync (= 2.7.0)
|
||||
autoprefixer-rails (= 8.6.5)
|
||||
bootstrap-sass (= 3.3.7)
|
||||
bootstrap-sass (= 3.4.1)
|
||||
bootstrap-switch-rails (= 3.3.3)
|
||||
capybara (= 3.11.1)
|
||||
carrierwave (= 1.2.3)
|
||||
capybara (= 3.15.0)
|
||||
carrierwave (= 1.3.1)
|
||||
compass-rails (= 3.1.0)
|
||||
configurate (= 0.3.1)
|
||||
coveralls (= 0.8.22)
|
||||
cucumber-api-steps (= 0.14)
|
||||
cucumber-rails (= 1.6.0)
|
||||
database_cleaner (= 1.7.0)
|
||||
devise (= 4.5.0)
|
||||
devise (= 4.6.1)
|
||||
devise-two-factor (= 3.0.3)
|
||||
devise_lastseenable (= 0.0.6)
|
||||
diaspora-prosody-config (= 0.0.7)
|
||||
diaspora_federation-json_schema (= 0.2.5)
|
||||
diaspora_federation-rails (= 0.2.5)
|
||||
diaspora_federation-test (= 0.2.5)
|
||||
diaspora_federation-json_schema (= 0.2.6)
|
||||
diaspora_federation-rails (= 0.2.6)
|
||||
diaspora_federation-test (= 0.2.6)
|
||||
entypo-rails (= 3.0.0)
|
||||
eye (= 0.10.0)
|
||||
factory_girl_rails (= 4.8.0)
|
||||
faraday (= 0.15.3)
|
||||
faraday (= 0.15.4)
|
||||
faraday-cookie_jar (= 0.0.6)
|
||||
faraday_middleware (= 0.12.2)
|
||||
fixture_builder (= 0.5.2.rc3)
|
||||
fog-aws (= 3.3.0)
|
||||
fog-aws (= 3.4.0)
|
||||
fuubar (= 2.3.2)
|
||||
gon (= 6.2.1)
|
||||
guard (= 2.15.0)
|
||||
guard-rspec (= 4.7.3)
|
||||
guard-rubocop (= 1.3.0)
|
||||
haml_lint (= 0.28.0)
|
||||
hamlit (= 2.9.1)
|
||||
handlebars_assets (= 0.23.2)
|
||||
hamlit (= 2.9.2)
|
||||
handlebars_assets (= 0.23.3)
|
||||
http_accept_language (= 2.1.1)
|
||||
i18n-inflector-rails (= 1.0.7)
|
||||
jasmine (= 3.3.0)
|
||||
|
|
@ -809,25 +826,25 @@ DEPENDENCIES
|
|||
jquery-rails (= 4.3.3)
|
||||
js-routes (= 1.4.4)
|
||||
js_image_paths (= 0.1.1)
|
||||
json (= 2.1.0)
|
||||
json (= 2.2.0)
|
||||
json-schema (= 2.8.1)
|
||||
json-schema-rspec (= 0.0.4)
|
||||
leaflet-rails (= 1.3.1)
|
||||
logging-rails (= 0.6.0)
|
||||
markdown-it-html5-embed (= 1.0.0)
|
||||
markerb (= 1.1.0)
|
||||
mini_magick (= 4.9.2)
|
||||
mini_magick (= 4.9.3)
|
||||
minitest
|
||||
mobile-fu (= 1.4.0)
|
||||
mysql2 (= 0.5.2)
|
||||
nokogiri (= 1.8.5)
|
||||
omniauth (= 1.8.1)
|
||||
nokogiri (= 1.10.1)
|
||||
omniauth (= 1.9.0)
|
||||
omniauth-tumblr (= 1.2)
|
||||
omniauth-twitter (= 1.4.0)
|
||||
omniauth-wordpress (= 0.2.2)
|
||||
open_graph_reader (= 0.6.2)
|
||||
openid_connect (= 1.1.6)
|
||||
pg (= 1.1.3)
|
||||
pg (= 1.1.4)
|
||||
poltergeist (= 1.18.1)
|
||||
pronto (= 0.9.5)
|
||||
pronto-eslint (= 0.9.1)
|
||||
|
|
@ -841,7 +858,7 @@ DEPENDENCIES
|
|||
rack-piwik (= 0.3.0)
|
||||
rack-rewrite (= 1.5.1)
|
||||
rack-ssl (= 1.4.1)
|
||||
rails (= 5.1.6)
|
||||
rails (= 5.1.6.2)
|
||||
rails-assets-autosize (= 4.0.2)!
|
||||
rails-assets-backbone (= 1.3.3)!
|
||||
rails-assets-blueimp-gallery (= 2.33.0)!
|
||||
|
|
@ -864,24 +881,25 @@ DEPENDENCIES
|
|||
rails-assets-markdown-it-sub (= 1.0.0)!
|
||||
rails-assets-markdown-it-sup (= 1.0.0)!
|
||||
rails-assets-utatti-perfect-scrollbar (= 1.4.0)!
|
||||
rails-controller-testing (= 1.0.2)
|
||||
rails-i18n (= 5.1.2)
|
||||
rails-timeago (= 2.16.0)
|
||||
rails-controller-testing (= 1.0.4)
|
||||
rails-i18n (= 5.1.3)
|
||||
rails-timeago (= 2.17.1)
|
||||
rb-fsevent (= 0.10.3)
|
||||
rb-inotify (= 0.9.10)
|
||||
rb-inotify (= 0.10.0)
|
||||
redcarpet (= 3.4.0)
|
||||
redis (= 3.3.5)
|
||||
responders (= 2.4.0)
|
||||
responders (= 2.4.1)
|
||||
rqrcode (= 0.10.1)
|
||||
rspec-json_expectations (~> 2.1)
|
||||
rspec-rails (= 3.8.1)
|
||||
rubocop (= 0.60.0)
|
||||
rspec-rails (= 3.8.2)
|
||||
rubocop (= 0.66.0)
|
||||
ruby-oembed (= 0.12.0)
|
||||
rubyzip (= 1.2.2)
|
||||
sass-rails (= 5.0.7)
|
||||
secure_headers (= 6.0.0)
|
||||
shoulda-matchers (= 3.1.2)
|
||||
sidekiq (= 5.2.3)
|
||||
sidekiq-cron (= 1.0.4)
|
||||
secure_headers (= 6.1.0)
|
||||
shoulda-matchers (= 4.0.1)
|
||||
sidekiq (= 5.2.5)
|
||||
sidekiq-cron (= 1.1.0)
|
||||
simple_captcha2 (= 0.4.3)
|
||||
simplecov (= 0.16.1)
|
||||
sinon-rails (= 1.15.0)
|
||||
|
|
@ -895,13 +913,13 @@ DEPENDENCIES
|
|||
twitter (= 6.2.0)
|
||||
twitter-text (= 1.14.7)
|
||||
typhoeus (= 1.3.1)
|
||||
uglifier (= 4.1.19)
|
||||
unicorn (= 5.4.1)
|
||||
uglifier (= 4.1.20)
|
||||
unicorn (= 5.5.0)
|
||||
unicorn-worker-killer (= 0.4.4)
|
||||
uuid (= 2.3.9)
|
||||
versionist (= 1.7.0)
|
||||
webmock (= 3.4.2)
|
||||
will_paginate (= 3.1.6)
|
||||
webmock (= 3.5.1)
|
||||
will_paginate (= 3.1.7)
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.1
|
||||
1.17.3
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
BIN
app/assets/images/branding/logos/app-icon-512.png
Normal file
BIN
app/assets/images/branding/logos/app-icon-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
app/assets/images/branding/logos/app-icon.png
Normal file
BIN
app/assets/images/branding/logos/app-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.8 KiB |
|
|
@ -10,14 +10,15 @@ body {
|
|||
.page-contacts,
|
||||
.page-conversations,
|
||||
.page-notifications,
|
||||
.page-people.action-show,
|
||||
.page-people.action-contacts,
|
||||
.page-people.action-show,
|
||||
.page-photos,
|
||||
.page-posts,
|
||||
.page-profiles.action-edit,
|
||||
.page-services.action-index,
|
||||
.page-streams,
|
||||
.page-tags,
|
||||
.page-two_factor_authentications,
|
||||
.page-user_applications,
|
||||
.page-users.action-edit,
|
||||
.page-users.action-update,
|
||||
|
|
|
|||
|
|
@ -93,5 +93,10 @@ textarea {
|
|||
}
|
||||
|
||||
::placeholder { text-transform: uppercase; }
|
||||
|
||||
p {
|
||||
margin-top: .5rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
.page-sessions.action-new,
|
||||
.page-sessions.action-create,
|
||||
.page-passwords.action-new,
|
||||
.page-passwords.action-edit {
|
||||
padding-top: 25px;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ class ApplicationController < ActionController::Base
|
|||
before_action :gon_set_current_user
|
||||
before_action :gon_set_appconfig
|
||||
before_action :gon_set_preloads
|
||||
before_action :configure_permitted_parameters, if: :devise_controller?
|
||||
|
||||
inflection_method grammatical_gender: :gender
|
||||
|
||||
|
|
@ -182,4 +183,10 @@ class ApplicationController < ActionController::Base
|
|||
return unless gon.preloads.nil?
|
||||
gon.preloads = {}
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def configure_permitted_parameters
|
||||
devise_parameter_sanitizer.permit(:sign_in, keys: [:otp_attempt])
|
||||
end
|
||||
end
|
||||
|
|
|
|||
27
app/controllers/manifest_controller.rb
Normal file
27
app/controllers/manifest_controller.rb
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ManifestController < ApplicationController
|
||||
def show # rubocop:disable Metrics/MethodLength
|
||||
render json: {
|
||||
short_name: AppConfig.settings.pod_name,
|
||||
name: AppConfig.settings.pod_name,
|
||||
description: "diaspora* is a free, decentralized and privacy-respecting social network",
|
||||
icons: [
|
||||
{
|
||||
src: helpers.image_path("branding/logos/app-icon.png"),
|
||||
type: "image/png",
|
||||
sizes: "192x192"
|
||||
},
|
||||
{
|
||||
src: helpers.image_path("branding/logos/app-icon-512.png"),
|
||||
type: "image/png",
|
||||
sizes: "512x512"
|
||||
}
|
||||
],
|
||||
start_url: "/",
|
||||
background_color: "#000000",
|
||||
display: "standalone",
|
||||
theme_color: "#000000"
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
@ -5,10 +5,54 @@
|
|||
# the COPYRIGHT file.
|
||||
|
||||
class SessionsController < Devise::SessionsController
|
||||
after_action :reset_authentication_token, only: [:create]
|
||||
before_action :reset_authentication_token, only: [:destroy]
|
||||
# rubocop:disable Rails/LexicallyScopedActionFilter
|
||||
before_action :authenticate_with_2fa, only: :create
|
||||
after_action :reset_authentication_token, only: :create
|
||||
before_action :reset_authentication_token, only: :destroy
|
||||
# rubocop:enable Rails/LexicallyScopedActionFilter
|
||||
|
||||
def find_user
|
||||
return User.find(session[:otp_user_id]) if session[:otp_user_id]
|
||||
|
||||
User.find_for_authentication(username: params[:user][:username]) if params[:user][:username]
|
||||
end
|
||||
|
||||
def authenticate_with_2fa
|
||||
self.resource = find_user
|
||||
u = find_user
|
||||
|
||||
return true unless u&.otp_required_for_login?
|
||||
|
||||
if params[:user][:otp_attempt].present? && session[:otp_user_id]
|
||||
authenticate_with_two_factor_via_otp(u)
|
||||
elsif u&.valid_password?(params[:user][:password])
|
||||
prompt_for_two_factor(u)
|
||||
end
|
||||
end
|
||||
|
||||
def valid_otp_attempt?(user)
|
||||
user.validate_and_consume_otp!(params[:user][:otp_attempt]) ||
|
||||
user.invalidate_otp_backup_code!(params[:user][:otp_attempt])
|
||||
rescue OpenSSL::Cipher::CipherError => _error
|
||||
false
|
||||
end
|
||||
|
||||
def authenticate_with_two_factor_via_otp(user)
|
||||
if valid_otp_attempt?(user)
|
||||
session.delete(:otp_user_id)
|
||||
sign_in(user)
|
||||
else
|
||||
flash.now[:alert] = "Invalid token"
|
||||
prompt_for_two_factor(user)
|
||||
end
|
||||
end
|
||||
|
||||
def prompt_for_two_factor(user)
|
||||
session[:otp_user_id] = user.id
|
||||
render :two_factor
|
||||
end
|
||||
|
||||
def reset_authentication_token
|
||||
current_user.reset_authentication_token! unless current_user.nil?
|
||||
current_user&.reset_authentication_token!
|
||||
end
|
||||
end
|
||||
|
|
|
|||
55
app/controllers/two_factor_authentications_controller.rb
Normal file
55
app/controllers/two_factor_authentications_controller.rb
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class TwoFactorAuthenticationsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :verify_otp_required, only: [:create]
|
||||
|
||||
def show
|
||||
@user = current_user
|
||||
end
|
||||
|
||||
def create
|
||||
current_user.otp_secret = User.generate_otp_secret(32)
|
||||
current_user.save!
|
||||
redirect_to confirm_two_factor_authentication_path
|
||||
end
|
||||
|
||||
def confirm_2fa
|
||||
redirect_to two_factor_authentication_path if current_user.otp_required_for_login?
|
||||
end
|
||||
|
||||
def confirm_and_activate_2fa
|
||||
if current_user.validate_and_consume_otp!(params[:user][:code])
|
||||
current_user.otp_required_for_login = true
|
||||
current_user.save!
|
||||
|
||||
flash[:notice] = t("two_factor_auth.flash.success_activation")
|
||||
redirect_to recovery_codes_two_factor_authentication_path
|
||||
else
|
||||
flash[:alert] = t("two_factor_auth.flash.error_token")
|
||||
redirect_to confirm_two_factor_authentication_path
|
||||
end
|
||||
end
|
||||
|
||||
def recovery_codes
|
||||
@recovery_codes = current_user.generate_otp_backup_codes!
|
||||
current_user.save!
|
||||
end
|
||||
|
||||
def destroy
|
||||
if current_user.valid_password?(params[:two_factor_authentication][:password])
|
||||
current_user.otp_required_for_login = false
|
||||
current_user.save!
|
||||
flash[:notice] = t("two_factor_auth.flash.success_deactivation")
|
||||
else
|
||||
flash[:alert] = t("users.destroy.wrong_password")
|
||||
end
|
||||
redirect_to two_factor_authentication_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def verify_otp_required
|
||||
redirect_to two_factor_authentication_path if current_user.otp_required_for_login?
|
||||
end
|
||||
end
|
||||
|
|
@ -152,6 +152,8 @@ class UsersController < ApplicationController
|
|||
:auto_follow_back_aspect_id,
|
||||
:getting_started,
|
||||
:post_default_public,
|
||||
:otp_required_for_login,
|
||||
:otp_secret,
|
||||
email_preferences: UserPreference::VALID_EMAIL_TYPES.map(&:to_sym)
|
||||
)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -72,4 +72,9 @@ module ApplicationHelper
|
|||
buf << [nonced_javascript_tag("$.fx.off = true;")] if Rails.env.test?
|
||||
buf.join("\n").html_safe
|
||||
end
|
||||
|
||||
def qrcode_uri
|
||||
label = current_user.username
|
||||
current_user.otp_provisioning_uri(label, issuer: AppConfig.environment.url)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,14 @@ class User < ApplicationRecord
|
|||
scope :halfyear_actives, ->(time = Time.now) { logged_in_since(time - 6.month) }
|
||||
scope :active, -> { joins(:person).where(people: {closed_account: false}) }
|
||||
|
||||
devise :database_authenticatable, :registerable,
|
||||
attr_encrypted :otp_secret, if: false, prefix: "plain_"
|
||||
|
||||
devise :two_factor_authenticatable,
|
||||
:two_factor_backupable,
|
||||
otp_backup_code_length: 16,
|
||||
otp_number_of_backup_codes: 10
|
||||
|
||||
devise :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable,
|
||||
:lockable, :lastseenable, :lock_strategy => :none, :unlock_strategy => :none
|
||||
|
||||
|
|
@ -42,6 +49,7 @@ class User < ApplicationRecord
|
|||
validate :no_person_with_same_username
|
||||
|
||||
serialize :hidden_shareables, Hash
|
||||
serialize :otp_backup_codes, Array
|
||||
|
||||
has_one :person, inverse_of: :owner, foreign_key: :owner_id
|
||||
has_one :profile, through: :person
|
||||
|
|
|
|||
|
|
@ -10,7 +10,11 @@ class DiasporaLinkService
|
|||
end
|
||||
|
||||
def find_or_fetch_entity
|
||||
entity_finder.find || fetch_entity
|
||||
if type && guid
|
||||
entity_finder.find || fetch_entity
|
||||
elsif author
|
||||
find_or_fetch_person
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -28,6 +32,12 @@ class DiasporaLinkService
|
|||
@entity_finder ||= Diaspora::EntityFinder.new(type, guid)
|
||||
end
|
||||
|
||||
def find_or_fetch_person
|
||||
Person.find_or_fetch_by_identifier(author)
|
||||
rescue DiasporaFederation::Discovery::DiscoveryError
|
||||
nil
|
||||
end
|
||||
|
||||
def normalize
|
||||
link.gsub!(%r{^web\+diaspora://}, "diaspora://") ||
|
||||
link.gsub!(%r{^//}, "diaspora://") ||
|
||||
|
|
@ -38,8 +48,10 @@ class DiasporaLinkService
|
|||
def parse
|
||||
normalize
|
||||
match = DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX.match(link)
|
||||
@author = match[1]
|
||||
@type = match[2]
|
||||
@guid = match[3]
|
||||
if match
|
||||
@author, @type, @guid = match.captures
|
||||
else
|
||||
@author = %r{^diaspora://(#{Validation::Rule::DiasporaId::DIASPORA_ID_REGEX})$}u.match(link)&.captures&.first
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
%h2 Resend confirmation instructions
|
||||
= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name)) do |f|
|
||||
= devise_error_messages!
|
||||
= render partial: "devise/shared/error_messages"
|
||||
%p
|
||||
= f.label :email
|
||||
%br/
|
||||
= f.text_field :email
|
||||
%p
|
||||
= f.submit t('.resend_confirmation')
|
||||
= render :partial => "devise/shared/links"
|
||||
= render partial: "devise/shared/links"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
.login-form
|
||||
.login-container
|
||||
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
|
||||
= devise_error_messages!
|
||||
= render partial: "devise/shared/error_messages", formats: [:html]
|
||||
= f.hidden_field :reset_password_token
|
||||
%fieldset
|
||||
%legend
|
||||
|
|
|
|||
|
|
@ -9,10 +9,6 @@
|
|||
= AppConfig.settings.pod_name
|
||||
|
||||
= form_for(resource, as: resource_name, url: password_path(resource_name), html: {class: "form-horizontal block-form"}, autocomplete: 'off') do |f|
|
||||
- if !devise_error_messages!.empty?
|
||||
%legend
|
||||
%i
|
||||
= t('devise.passwords.new.no_account') # this is an error message and should not be displayed as a legend
|
||||
%fieldset
|
||||
%label#emailLabel.sr-only{for: "user_email"}
|
||||
= t("devise.passwords.new.email")
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
%fieldset
|
||||
%legend
|
||||
=t('devise.passwords.new.forgot_password')
|
||||
- unless devise_error_messages!.empty?
|
||||
- unless resource.errors.empty?
|
||||
%i= t('devise.passwords.new.no_account')
|
||||
|
||||
.control-group
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
%h2 Resend unlock instructions
|
||||
= form_for(resource, :as => resource_name, :url => unlock_path(resource_name)) do |f|
|
||||
= devise_error_messages!
|
||||
= render partial: "devise/shared/error_messages"
|
||||
%p
|
||||
= f.label :email
|
||||
%br/
|
||||
= f.text_field :email
|
||||
%p
|
||||
= f.submit t('.resend_unlock')
|
||||
= render :partial => "devise/shared/links"
|
||||
= render partial: "devise/shared/links"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
%meta{charset: "utf-8"}/
|
||||
= content_for?(:meta_data) ? yield(:meta_data) : metas_tags
|
||||
|
||||
%meta{content: "yes", name: "mobile-web-app-capable"}/
|
||||
%link{rel: "manifest", href: "/manifest.json"}
|
||||
|
||||
/ favicon
|
||||
/ For Apple devices
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
= load_javascript_locales
|
||||
|
||||
= include_color_theme
|
||||
= render "head"
|
||||
= render "layouts/head"
|
||||
= translation_missing_warnings
|
||||
|
||||
%body{class: "page-#{controller_name} action-#{action_name}"}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
= javascript_include_tag "mobile/mobile"
|
||||
= load_javascript_locales
|
||||
|
||||
= render "head"
|
||||
= render "layouts/head"
|
||||
= include_color_theme "mobile"
|
||||
|
||||
%meta{name: "viewport", content: "width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no"}/
|
||||
|
|
@ -17,11 +17,6 @@
|
|||
%meta{name: "MobileOptimized", content: "320"}/
|
||||
%meta{"http-equiv" => "cleartype", :content => "on"}/
|
||||
|
||||
/ iOS mobile web app indicator
|
||||
/ NOTE(we will enable these once we don't have to rely on back/forward buttons anymore)
|
||||
/%meta{:name => "apple-mobile-web-app-capable", :content => "yes"}
|
||||
/%link{:rel => "apple-touch-startup-image", :href => "/images/apple-splash.png"}
|
||||
|
||||
%body
|
||||
#app
|
||||
= render "layouts/header"
|
||||
|
|
|
|||
31
app/views/sessions/two_factor.html.haml
Normal file
31
app/views/sessions/two_factor.html.haml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
- content_for :page_title do
|
||||
= AppConfig.settings.pod_name + " - " + t("two_factor_auth.title")
|
||||
|
||||
.container#twofa
|
||||
.text-center
|
||||
.logos-asterisk
|
||||
%h1
|
||||
= t("two_factor_auth.title")
|
||||
|
||||
|
||||
= form_for resource, as: resource_name,
|
||||
url: session_path(resource_name),
|
||||
html: {class: "block-form"},
|
||||
method: :post do |f|
|
||||
%fieldset
|
||||
%label.sr-only#otp-label{for: "otp_attempt"}
|
||||
= t("two_factor_auth.input_token.label")
|
||||
%i.entypo-lock
|
||||
= f.text_field :otp_attempt,
|
||||
type: :text,
|
||||
placeholder: t("two_factor_auth.input_token.placeholder"),
|
||||
required: true,
|
||||
autofocus: true,
|
||||
class: "input-block-level form-control"
|
||||
%p= t "two_factor_auth.recovery.reminder"
|
||||
|
||||
|
||||
.actions
|
||||
= f.button t("devise.sessions.new.sign_in"),
|
||||
type: :submit,
|
||||
class: "btn btn-large btn-block btn-primary"
|
||||
|
|
@ -9,6 +9,8 @@
|
|||
class: request.path == edit_user_path ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("privacy"), privacy_settings_path,
|
||||
class: current_page?(privacy_settings_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("two_factor_auth.title"), two_factor_authentication_path,
|
||||
class: current_page?(two_factor_authentication_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("_services"), services_path,
|
||||
class: current_page?(services_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("_applications"), api_openid_connect_user_applications_path,
|
||||
|
|
|
|||
11
app/views/two_factor_authentications/_activate.haml
Normal file
11
app/views/two_factor_authentications/_activate.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
%p= t("two_factor_auth.explanation")
|
||||
|
||||
.well= t("two_factor_auth.deactivated.status")
|
||||
= form_for "user", url: two_factor_authentication_path, html: {method: :post} do |f|
|
||||
= f.hidden_field :otp_required_for_login, value: true
|
||||
.clearfix.form-group= f.submit t("two_factor_auth.deactivated.change_button"),
|
||||
class: "btn btn-primary pull-right"
|
||||
33
app/views/two_factor_authentications/_confirm.haml
Normal file
33
app/views/two_factor_authentications/_confirm.haml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.confirm.title")
|
||||
%p= t("two_factor_auth.confirm.status")
|
||||
.small-horizontal-spacer
|
||||
%h4= t("two_factor_auth.confirm.scan_title")
|
||||
.row
|
||||
.col-md-6
|
||||
%p= t("two_factor_auth.confirm.scan_explanation")
|
||||
.two-factor-qr
|
||||
!= RQRCode::QRCode.new(qrcode_uri).as_svg(offset: 10, fill: "ffffff", module_size: 5)
|
||||
|
||||
.col-md-6
|
||||
%p= t("two_factor_auth.confirm.manual_explanation")
|
||||
%p!= t("two_factor_auth.confirm.manual_explanation_cont")
|
||||
%pre.well= current_user.otp_secret.scan(/.{4}/).join(" ")
|
||||
|
||||
.row
|
||||
.col-md-12
|
||||
.small-horizontal-spacer
|
||||
%h4= t("two_factor_auth.confirm.input_title")
|
||||
= t("two_factor_auth.confirm.input_explanation")
|
||||
= form_for "user", url: confirm_two_factor_authentication_path,
|
||||
html: {method: :post, class: "form-horizontal"} do |f|
|
||||
.form-group
|
||||
= f.label :code, t("two_factor_auth.input_token.label"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.text_field :code, placeholder: t("two_factor_auth.input_token.placeholder"), class: "form-control"
|
||||
.form-group
|
||||
.col-sm-12
|
||||
= link_to t("cancel"), two_factor_authentication_path, class: "btn btn-default"
|
||||
= f.submit t("two_factor_auth.confirm.activate_button"), class: "btn btn-primary pull-right"
|
||||
27
app/views/two_factor_authentications/_deactivate.haml
Normal file
27
app/views/two_factor_authentications/_deactivate.haml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
%p= t("two_factor_auth.explanation")
|
||||
.well= t("two_factor_auth.activated.status")
|
||||
|
||||
%hr
|
||||
|
||||
%h4= t("two_factor_auth.activated.change_button")
|
||||
%p= t("two_factor_auth.activated.change_label")
|
||||
|
||||
= form_for "two_factor_authentication", url: two_factor_authentication_path,
|
||||
html: {method: :delete, class: "form-horizontal"} do |f|
|
||||
.form-group
|
||||
= f.label :password, t("users.edit.current_password"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.password_field :password, class: "form-control"
|
||||
.clearfix= f.submit t("two_factor_auth.activated.change_button"), class: "btn btn-primary pull-right"
|
||||
|
||||
%hr
|
||||
|
||||
%h4= t("two_factor_auth.recovery.title")
|
||||
%p= t("two_factor_auth.recovery.explanation_short")
|
||||
%p= t("two_factor_auth.recovery.invalidation_notice")
|
||||
%p= link_to t("two_factor_auth.recovery.button"),
|
||||
recovery_codes_two_factor_authentication_path, class: "btn btn-default"
|
||||
18
app/views/two_factor_authentications/_recovery.haml
Normal file
18
app/views/two_factor_authentications/_recovery.haml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
.well= t("two_factor_auth.activated.status")
|
||||
|
||||
%hr
|
||||
|
||||
%h3= t("two_factor_auth.recovery.title")
|
||||
%p= t("two_factor_auth.recovery.explanation")
|
||||
|
||||
%ol.recovery-codes
|
||||
- @recovery_codes.each do |code|
|
||||
%li<
|
||||
%samp= code
|
||||
|
||||
.form-group.submit_block.clearfix
|
||||
= link_to t("ok"), two_factor_authentication_path, class: "btn btn-primary pull-right"
|
||||
4
app/views/two_factor_authentications/_token_form.haml
Normal file
4
app/views/two_factor_authentications/_token_form.haml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.form-group
|
||||
= f.label :code, t("two_factor_auth.input_token.label"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.text_field :code, placeholder: t("two_factor_auth.input_token.placeholder"), class: "form-control"
|
||||
11
app/views/two_factor_authentications/confirm_2fa.html.haml
Normal file
11
app/views/two_factor_authentications/confirm_2fa.html.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.confirm.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
= render "confirm"
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.title")
|
||||
= t("two_factor_auth.recovery.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
= render "recovery"
|
||||
15
app/views/two_factor_authentications/show.html.haml
Normal file
15
app/views/two_factor_authentications/show.html.haml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
|
||||
- if @user.otp_required_for_login
|
||||
= render "deactivate"
|
||||
- else
|
||||
= render "activate"
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
defaults:
|
||||
version:
|
||||
number: "0.7.10.0" # Do not touch unless doing a release, do not backport the version number that's in master
|
||||
number: "0.7.11.0" # Do not touch unless doing a release, do not backport the version number that's in master
|
||||
heroku: false
|
||||
environment:
|
||||
url: "http://localhost:3000/"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ end
|
|||
# Use this hook to configure devise mailer, warden hooks and so forth.
|
||||
# Many of these configuration options can be set straight in your model.
|
||||
Devise.setup do |config|
|
||||
config.warden do |manager|
|
||||
manager.default_strategies(scope: :user).unshift :two_factor_authenticatable
|
||||
manager.default_strategies(scope: :user).unshift :two_factor_backupable
|
||||
end
|
||||
|
||||
# The secret key used by Devise. Devise uses this key to generate
|
||||
# random tokens. Changing this key will render invalid all existing
|
||||
# confirmation, reset password and unlock tokens in the database.
|
||||
|
|
@ -92,7 +97,7 @@ Devise.setup do |config|
|
|||
# It will change confirmation, password recovery and other workflows
|
||||
# to behave the same regardless if the e-mail provided was right or wrong.
|
||||
# Does not affect registerable.
|
||||
# config.paranoid = true
|
||||
config.paranoid = true
|
||||
|
||||
# By default Devise will store the user in session. You can skip storage for
|
||||
# particular strategies by setting this option.
|
||||
|
|
@ -270,4 +275,8 @@ Devise.setup do |config|
|
|||
# When using omniauth, Devise cannot automatically set Omniauth path,
|
||||
# so you need to do it manually. For the users scope, it would be:
|
||||
# config.omniauth_path_prefix = '/my_engine/users/auth'
|
||||
|
||||
# if a user enables 2fa this would log them in without requiring them
|
||||
# to enter a token
|
||||
config.sign_in_after_reset_password = false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@
|
|||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
Rails.application.config.filter_parameters += %i[password message text bio]
|
||||
Rails.application.config.filter_parameters += [:otp_attempt]
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ SecureHeaders::Configuration.default do |config|
|
|||
media_src: %w[https:],
|
||||
script_src: %w['self' blob: 'unsafe-eval' platform.twitter.com cdn.syndication.twimg.com widgets.flickr.com
|
||||
embedr.flickr.com www.instagram.com 'unsafe-inline'],
|
||||
style_src: %w['self' 'unsafe-inline' platform.twitter.com *.twimg.com]
|
||||
style_src: %w['self' 'unsafe-inline' platform.twitter.com *.twimg.com],
|
||||
manifest_src: %w['self']
|
||||
}
|
||||
|
||||
if AppConfig.environment.assets.host.present?
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ ar:
|
|||
new:
|
||||
email: "البريد الإلكترونيّ"
|
||||
forgot_password: "أنسيت كلمة المرور؟"
|
||||
no_account: "ليس هناك حساب بهذا البريد الإلكترونيّ"
|
||||
reset_password: "صفّر كلمة المرور"
|
||||
send_password_instructions: "أرسل لي إرشادات تصفير كلمة المرور"
|
||||
send_instructions: "سيصلك بريد إلكترونيّ قريبًا فيه إرشادات تصفير كلمة المرور."
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ art-nvi:
|
|||
change_password: "Leykatem oeyä ftemlì'ut"
|
||||
new:
|
||||
forgot_password: "Ngal tswama' ngeyä ftemlì'uti srak?"
|
||||
no_account: "Kea Diaspora a hu fìImeyl fkeytok. Diasporari txo perey, ayoe terìng ayDiasporat ye'rìn"
|
||||
send_password_instructions: "Fpe' oeru aysänumet fte oe tsivun leykivatem oeyä ftemlì'ut"
|
||||
send_instructions: "Ngal tayel Imeylit a wìntxu ngaru fya'ot a ngal leykatem ngeyä ftemlì'ut."
|
||||
updated: "Ngeyä ftemlì'u lìmatem. Nga tung fìtsengmì set."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ bg:
|
|||
change_password: "Промяна на паролата"
|
||||
new:
|
||||
forgot_password: "Забравена парола?"
|
||||
no_account: "Не съществува акаунт с въведената ел. поща. Ако очаквате покана, знайте че ние ги раздаваме възможно най-бързо"
|
||||
send_password_instructions: "Изпращане на инструкции за възстановяване на паролата"
|
||||
send_instructions: "Ще получите ел. писмо с инструкции за промяна на паролата."
|
||||
updated: "Паролата е променена успешно. Сега сте вписани."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ br:
|
|||
new:
|
||||
email: "Chomlec'h postel"
|
||||
forgot_password: "Ankouaet ho ker-tremen ganeoc'h?"
|
||||
no_account: "N'eus kont ebet stag ouzh ar postel-mañ."
|
||||
reset_password: "Adtermeniñ ar ger-tremen"
|
||||
send_password_instructions: "Kas din an titouroù evit adsevel ma ger-tremen"
|
||||
send_instructions: "Emaoc'h o vont da resev ur postel a-raok pell gant titouroù evit gouzout an doare da adsevel ho ker-tremen."
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ bs:
|
|||
change_password: "Promjeni moju šifru"
|
||||
new:
|
||||
forgot_password: "Zaboravili ste šifru?"
|
||||
no_account: "Ne postoji račun sa ovom e-mail adresom. Ako očekujete pozivnicu, šaljemo ih čim prije."
|
||||
send_password_instructions: "Pošalji mi uputstva za resetovanje šifre"
|
||||
send_instructions: "Dobit ćete e-mail sa uputstvima kako da resetujete vašu šifru za par minuta."
|
||||
updated: "Vaša šifra je uspješno promijenjena. Sada ste prijavljeni."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ cs:
|
|||
new:
|
||||
email: "E-mailová adresa"
|
||||
forgot_password: "Zapomněli jste heslo?"
|
||||
no_account: "Neexistuje žádný účet s touto e-mailovou adresou. Pokud čekáte na pozvání, budeme je vydávat, co nejdříve to bude možné"
|
||||
reset_password: "Znovunastavit heslo"
|
||||
send_password_instructions: "Zaslat instrukce k nastavení nového hesla."
|
||||
no_token: "Na tuto stránku se nemůžete dostat, pokud nepřicházíte z e-mailu pro obnovení hesla. Pokud z e-mailu přicházíte, ujistěte se, že používáte celé poskytnuté URL."
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ cy:
|
|||
change_password: "Newid fy nghyfrinair"
|
||||
new:
|
||||
forgot_password: "Wedi anghofio eich cyfrinair?"
|
||||
no_account: "Dim cyfrif gyda e-bost hwn yn bodoli. Os ydych yn aros am wahodd, rhaid i chi aros hwyrach bach..."
|
||||
send_instructions: "Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau."
|
||||
updated: "Newidiwyd eich cyfrinair yn llwyddiannus. Rydych chi wedi arwyddo i fewn."
|
||||
registrations:
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ da:
|
|||
new:
|
||||
email: "E-mail adresse"
|
||||
forgot_password: "Glemt din adgangskode?"
|
||||
no_account: "Ingen konto med denne email adresse eksisterer."
|
||||
reset_password: "Nulstil adgangskode"
|
||||
send_password_instructions: "Send mig instruktioner til nulstilning af adgangskode"
|
||||
no_token: "Du kan ikke tilgå denne side uden at komme fra en e-mail med nulstilling af dit kodeord. Hvis du kommer fra sådan en e-mail, undersøg venligst at du har brugt hele den URL der stod i mailen."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de-moo:
|
|||
new:
|
||||
email: "Email-Adresse"
|
||||
forgot_password: "Passwort vergessen?"
|
||||
no_account: "Es existiert keine Kuh mit dieser E-Mail-Adresse"
|
||||
reset_password: "Passwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Du kannst auf diese Weide nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls du von einer E-Mail zur Passwortrücksetzung kommst, vergewissere dich bitte, dass du die vollständige angegebene URL verwendet hast."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de:
|
|||
new:
|
||||
email: "E-Mail-Adresse"
|
||||
forgot_password: "Kennwort vergessen?"
|
||||
no_account: "Es existiert kein Benutzerkonto mit dieser E-Mail-Adresse"
|
||||
reset_password: "Kennwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Du kannst auf diese Seite nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls du von einer E-Mail zur Passwortrücksetzung kommst, vergewissere dich bitte, dass du die vollständige angegebene URL verwendet hast."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de_formal:
|
|||
new:
|
||||
email: "E-Mail-Adresse"
|
||||
forgot_password: "Passwort vergessen?"
|
||||
no_account: "Es existiert kein Benutzerkonto mit dieser E-Mail-Adresse"
|
||||
reset_password: "Passwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Sie können auf diese Seite nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls sie von einer E-Mail zur Passwortrücksetzung kommen, vergewissern Sie sich bitte, dass Sie die vollständige angegebene URL verwendet haben."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ el:
|
|||
new:
|
||||
email: "Διεύθυνση email"
|
||||
forgot_password: "Ξεχάσατε τον κωδικό σας;"
|
||||
no_account: "Δεν υπάρχει λογαριασμός με αυτό το email. Αν περιμένετε για πρόσκληση, θα γίνουν αποστολές το συντομότερο δυνατόν"
|
||||
reset_password: "Επαναφορά κωδικού"
|
||||
send_password_instructions: "Στείλτε μου οδηγίες επαναφοράς κωδικού"
|
||||
send_instructions: "Θα λάβετε ένα email με οδηγίες για το πως να επαναφέρετε τον κωδικό πρόσβασης σας σε λίγα λεπτά."
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ en:
|
|||
confirm_password: Confirm password
|
||||
new:
|
||||
forgot_password: Forgot your password?
|
||||
no_account: No account with this email exists
|
||||
reset_password: Reset password
|
||||
email: Email address
|
||||
send_password_instructions: Send me reset password instructions
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ en_1337:
|
|||
change_password: "CH4NG3 MY *****"
|
||||
new:
|
||||
forgot_password: "F0RG07 Y0UR *****?"
|
||||
no_account: "404 - N07 F0UND!"
|
||||
send_password_instructions: "R3537 MY *****!!"
|
||||
send_instructions: "G0NN4 R3C113V3 R3537 1N57RUC71ON5 BY M41L!"
|
||||
updated: "***** CH4NG3D"
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ en_shaw:
|
|||
change_password: "𐑗𐑱𐑯𐑡 𐑥𐑲 𐑐𐑨𐑕𐑢𐑼𐑛"
|
||||
new:
|
||||
forgot_password: "𐑓𐑹𐑜𐑪𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛?"
|
||||
no_account: "𐑯𐑴 𐑩𐑒𐑬𐑯𐑑 𐑢𐑦𐑞 𐑞𐑦𐑕 𐑦-𐑥𐑱𐑤 𐑧𐑜𐑟𐑦𐑕𐑑𐑕. 𐑦𐑓 𐑿 𐑸 𐑢𐑱𐑑𐑦𐑙 𐑓𐑹 𐑩𐑯 𐑦𐑯𐑝𐑲𐑑, 𐑢𐑰 𐑸 𐑮𐑴𐑤𐑦𐑙 𐑞𐑧𐑥 𐑬𐑑 𐑨𐑟 𐑕𐑵𐑯 𐑨𐑟 𐑐𐑪𐑕𐑦𐑚𐑩𐑤"
|
||||
send_password_instructions: "𐑕𐑧𐑯𐑛 𐑥𐑰 𐑮𐑦𐑕𐑧𐑑 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟"
|
||||
send_instructions: "𐑿 𐑢𐑦𐑤 𐑮𐑦𐑕𐑰𐑝 𐑩𐑯 𐑦-𐑥𐑱𐑤 𐑢𐑦𐑞 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟 𐑩𐑚𐑬𐑑 𐑣𐑬 𐑑 𐑮𐑦𐑕𐑧𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯 𐑩 𐑓𐑿 𐑥𐑦𐑯𐑩𐑑𐑕."
|
||||
updated: "𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑢𐑪𐑟 𐑗𐑱𐑯𐑡𐑛 𐑕𐑩𐑒𐑕𐑧𐑕𐑓𐑫𐑤𐑦. 𐑿 𐑸 𐑯𐑬 𐑕𐑲𐑯𐑛 𐑦𐑯."
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ en_valspeak:
|
|||
new:
|
||||
email: "Email addy"
|
||||
forgot_password: "Oh noes!? did u like, forget ur passwerd? D:"
|
||||
no_account: "sry but liek, no account that has this email existz... sry bout that :\\"
|
||||
reset_password: "Reset passwerd"
|
||||
send_password_instructions: "Send meh stuff on how 2 reset mah passwerd plz! Kthxbye <3"
|
||||
send_instructions: "U will like, receive an email wit some txt on how 2 liek... reset ur passwerd in a few min, kay? So just chillax till then, kay? Kay. <3"
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ eo:
|
|||
change_password: "Ŝanĝi mian pasvorton"
|
||||
new:
|
||||
forgot_password: "Ĉu vi forgesis vian pasvorton?"
|
||||
no_account: "Ne ekzistas konto kun ĉi tiu retpoŝtadreso. Se vi atendas inviton, ni plej rapide sendos ilin"
|
||||
send_password_instructions: "Sendi al mi instrukciojn por restartigi pasvorton"
|
||||
send_instructions: "Post kelkaj minutoj vi ricevos retpoŝton kun instrukcioj pri kiel restartigi vian pasvorton."
|
||||
updated: "Vi sukcese ŝanĝis vian pasvorton. Vi nun estas ensalutinta."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ es-AR:
|
|||
new:
|
||||
email: "Correo electrónico"
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No hay ninguna cuenta con esta dirección de correo electrónico. Si estás esperando una invitación, te la enviaremos tan pronto como sea posible."
|
||||
reset_password: "Resetear contraseña"
|
||||
send_password_instructions: "Enviame instrucciones para cambiar mi contraseña."
|
||||
no_token: "No puedes acceder a esta página si no vienes de un mensaje de restablecimiento de contraseña. Si vienes de un mensaje de restablecimiento de contraseña, por favor asegúrate de que has utilizado la URL completa proporcionada en el mensaje."
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ es-CL:
|
|||
change_password: "Cambiar mi contraseña"
|
||||
new:
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No existe una cuenta asociada con ese email. Si estas esperando una invitación, la enviaremos a la brevedad"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña"
|
||||
no_token: "No puedes acceder a esta página sino viene de un correo electrónico de restablecimiento de contraseña. Si viene de un correo electrónico de restablecimiento de contraseña, por favor asegúrese de que utilizó la URL completa proporcionada."
|
||||
send_instructions: "Recibirás un correo con instrucciones para restablecer tu contraseña en pocos minutos."
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ es-MX:
|
|||
new:
|
||||
email: "Dirección de correo electrónico"
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No existe una cuenta con este correo electrónico."
|
||||
reset_password: "Restablecer contraseña"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña."
|
||||
send_instructions: "Recibirás un correo electrónico con instrucciones para restablecer tu contraseña dentro de pocos minutos."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ es:
|
|||
new:
|
||||
email: "Dirección de correo"
|
||||
forgot_password: "¿Has olvidado tu contraseña?"
|
||||
no_account: "No existe una cuenta con ese correo"
|
||||
reset_password: "Resetear contraseña"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña"
|
||||
no_token: "No puedes acceder a esta página sin venir un correo de reseteo de contraseña. Si vienes de uno de estos correos, por favor asegúrate de utilizar la URL proporcionada."
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ et:
|
|||
change_password: "Muuda parooli"
|
||||
new:
|
||||
forgot_password: "Unustasid parooli?"
|
||||
no_account: "Sellise e-mailiga kontot pole. Kui sa ootad kutset, siis saadame selle esimesel võimalusel"
|
||||
send_password_instructions: "Saada mulle juhised salasõna lähtestamiseks."
|
||||
send_instructions: "Mõne minuti jooksul saad e-kirja juhistega oma parooli muutmiseks."
|
||||
updated: "Sinu parool on edukalt muudetud. Oled nüüd sisse logitud."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ eu:
|
|||
change_password: "Nire pasahitza aldatu"
|
||||
new:
|
||||
forgot_password: "Pasahitza ahaztu duzu?"
|
||||
no_account: "Ez da konturik e-posta horrekin. Gonbidapen baten zain bazaude, ahal dugun azkarren bidaliko dizugu bat"
|
||||
send_password_instructions: "Bidali iezadazu pasahitzaren berrezarpenerako argibideak"
|
||||
send_instructions: "Hurrengo minutuetan email bat jasoko dituzu pasahitza berrezartzeko argibideekin."
|
||||
updated: "Zure pasahitza arrakastaz aldatu duzu. Autentikatuta zaude orain."
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ fi:
|
|||
new:
|
||||
email: "Sähköpostiosoite"
|
||||
forgot_password: "Unohditko salasanasi?"
|
||||
no_account: "Tunnusta tälle sähköpostiosoitteelle ei ole olemassa."
|
||||
reset_password: "Vaihda salasana"
|
||||
send_password_instructions: "Lähetä minulle salasanan uudelleenasettamisohjeet"
|
||||
send_instructions: "Saat hetken päästä sähköpostiisi ohjeet siitä, miten voit asettaa salasanasi uudelleen."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ fr:
|
|||
new:
|
||||
email: "Adresse E-mail"
|
||||
forgot_password: "Mot de passe oublié ?"
|
||||
no_account: "Aucun compte n'est associé à cette adresse de courrier électronique."
|
||||
reset_password: "Réinitialiser le mot de passe"
|
||||
send_password_instructions: "Envoyer les instructions de réinitialisation de mot de passe"
|
||||
no_token: "Vous ne pouvez accéder à cette page sans venir d'un e-mail de réinitialisation du mot de passe. Veuillez vérifier que vous avez utiliser l'URL en entier."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ he:
|
|||
new:
|
||||
email: "כתובת דוא\"ל"
|
||||
forgot_password: "שכחת את סיסמתך?"
|
||||
no_account: "לא קיים חשבון עם כתובת דוא״ל זו"
|
||||
reset_password: "איפוס סיסמה"
|
||||
send_password_instructions: "שליחת הנחיות איפוס הססמה אלי"
|
||||
send_instructions: "בעוד מספר דקות תתקבל בתיבת הדוא״ל שלך הודעה עם הנחיות כיצד לאפס את סיסמתך."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ hu:
|
|||
new:
|
||||
email: "E-mail cím"
|
||||
forgot_password: "Elfelejtetted a jelszavad?"
|
||||
no_account: "Ehhez az e-mail címhez nem tartozik fiók."
|
||||
reset_password: "Jelszó visszaállítása"
|
||||
send_password_instructions: "Új jelszót igénylek"
|
||||
send_instructions: "Néhány perc múlva kapsz egy e-mailt arról, hogyan állíthatod alaphelyzetbe a jelszavadat."
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ hye-classical:
|
|||
new:
|
||||
email: "Էլ․ հասցէ"
|
||||
forgot_password: "Մոռացե՞լ ես գաղտնաբառդ"
|
||||
no_account: "Այս էլ.հասցէով հաշիւ չկայ։"
|
||||
reset_password: "Վերականգնել գաղտնաբառը"
|
||||
send_password_instructions: "Ուղարկէք ինձ գաղտնաբառը փոխելու ցուցումները"
|
||||
no_token: "Այս էջը հասանելի է միայն գաղտնաբառը վերականգնելու յղումով նամակից գալու դէպքում։ Եթէ հէնց այդտեղից է, որ եկել ես, հաւաստիացիր, որ ամբողջական յղումն ես օգտագործել։"
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ hye:
|
|||
new:
|
||||
email: "Էլ․հասցե"
|
||||
forgot_password: "Մոռացե՞լ ես գաղտնաբառդ"
|
||||
no_account: "Այս էլ.հասցեով հաշիվ չկա։"
|
||||
reset_password: "Վերականգնել գաղտնաբառը"
|
||||
send_password_instructions: "Ուղարկեք ինձ գաղտնաբառը փոխելու ցուցումները"
|
||||
no_token: "Այս էջը հասանելի է միայն գաղնաբառը վերականգնելու հղումով նամակից գալու դեպքում։ Եթե հենց այդտեղից է, որ եկել ես, հավաստիացիր, որ ամբողջական հղումն ես օգտագործել։"
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ ia:
|
|||
new:
|
||||
email: "Adresse de e-mail"
|
||||
forgot_password: "Contrasigno oblidate?"
|
||||
no_account: "Nulle conto con iste adresse de e-mail existe."
|
||||
reset_password: "Reinitialisar contrasigno"
|
||||
send_password_instructions: "Inviar instructiones pro reinitialisar contrasigno"
|
||||
no_token: "Tu non pote acceder a iste pagina sin venir ab un e-mail pro reinitialisar contrasigno. Si tu de facto veni ab un e-mail pro reinitialisar contrasigno, per favor assecura te de usar le totalitate del URL fornite."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ id:
|
|||
change_password: "Ubah kata sandi saya"
|
||||
new:
|
||||
forgot_password: "Lupa kata sandi anda?"
|
||||
no_account: "Tidak ditemukan akun dengan E-mail ini. Jika anda menunggu invitasi (undangan), kami akan menyebarkannya secepatnya"
|
||||
send_password_instructions: "Kirimkan saya instruksi untuk membuat ulang kata sandi"
|
||||
send_instructions: "Anda akan menerima email berisi petunjuk cara membuat ulang kata sandi Anda dalam beberapa menit."
|
||||
updated: "Kata kunci Anda telah berhasil diubah. Anda sekarang sudah masuk."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ is:
|
|||
new:
|
||||
email: "Netfang"
|
||||
forgot_password: "Gleymdirðu lykilorðinu þínu?"
|
||||
no_account: "Enginn notandi með þetta netfang ert til"
|
||||
reset_password: "Endurstilla lykilorð"
|
||||
send_password_instructions: "Senda mér leiðbeiningar um hvernig ég get endurstillt lykilorðið mitt"
|
||||
send_instructions: "Þú munt fá tölvupóst innan fárra mínútna, með leiðbeiningum um hvernig þú getur endurstillt lykilorð þitt."
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ it:
|
|||
new:
|
||||
email: "Indirizzo email"
|
||||
forgot_password: "Hai dimenticato la password?"
|
||||
no_account: "Non esiste un account con questo indirizzo email"
|
||||
reset_password: "Azzera password"
|
||||
send_password_instructions: "Inviami le istruzioni per reimpostare la password."
|
||||
send_instructions: "Tra pochi minuti riceverai una email con le istruzioni su come cambiare la tua password."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ ja:
|
|||
new:
|
||||
email: "メールアドレス"
|
||||
forgot_password: "パスワードを忘れましたか?"
|
||||
no_account: "このメールアドレスに一致するアカウントは存在しません"
|
||||
reset_password: "パスワードの再設定"
|
||||
send_password_instructions: "パスワード再発行の手続きメールを送ってください。"
|
||||
no_token: "パスワードリセットのメールからではないと、このページにアクセスすることはできません。パスワードリセットのメールから来た場合は、提供された完全なURLを使用していることを確認してください。"
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ ka:
|
|||
change_password: "ჩემი პაროლის შეცვლა"
|
||||
new:
|
||||
forgot_password: "დაგავიწყდათ თქვენი პაროლი?"
|
||||
no_account: "ამ ელ-ფოსტით ანგარიში არ არსებობს. თუ თქვენ მოსაწვევს ელოდებით, ჩვენ მათ დაგზავნას რაც შეიძლება მალე მოვახდენთ"
|
||||
send_password_instructions: "გამომიგზავნეთ პაროლის განახლების ინსტრუქცია"
|
||||
send_instructions: "თქვენ რამდენიმე წუთში მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორ უნდა შეცვალოთ თქვენი პაროლი."
|
||||
updated: "პაროლი წარამტებით შეიცვალა. თქვენ ახლა შემოსული ხართ."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ ko:
|
|||
new:
|
||||
email: "이메일"
|
||||
forgot_password: "암호를 잊었습니까?"
|
||||
no_account: "등록되지 않은 이메일 주소입니다."
|
||||
reset_password: "암호 재설정"
|
||||
send_password_instructions: "암호 재설정 메일 보내기"
|
||||
send_instructions: "몇 분 안으로 암호를 초기화하기 위한 이메일이 도착합니다."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ lt:
|
|||
change_password: "Keisti mano slaptažodį"
|
||||
new:
|
||||
forgot_password: "Pamiršai slaptažodį?"
|
||||
no_account: "Tokio el. pašto mūsų sistemoje nėra užregistruota. Laukiančius pakvietimo įspėjame, kad išsiųsime juos kai tik galėsime."
|
||||
send_password_instructions: "Siųsti nurodymus, kaip atstatyti slaptažodį"
|
||||
send_instructions: "Netrukus gausite el. laišką su nurodymais, kaip atstatyti slaptažodį."
|
||||
updated: "Slaptažodis sėkmingai pakeistas. Prisijungta."
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ mk:
|
|||
change_password: "Промена на лозинка"
|
||||
new:
|
||||
forgot_password: "Ја заборавивте лозинката?"
|
||||
no_account: "No account with this email exsists. If you are waiting for an invite, we are rolling them out as soon as possible"
|
||||
send_password_instructions: "Испрати ми ги инструкциите за ресетирање на лозинката"
|
||||
send_instructions: "За неколку минути ќе добиете е-маил со инструкции за начинот на кој може да ја ресетирате вашата лозинка."
|
||||
updated: "Вашата лозинка беше успешно променета. Сега сте најавени."
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ ms:
|
|||
new:
|
||||
email: "Alamat emel"
|
||||
forgot_password: "Lupa kata laluan anda?"
|
||||
no_account: "Tiada akaun dengan e-mel ini wujud. Jika anda sedang menunggu untuk jemputan, kami memusing mereka secepat mungkin"
|
||||
reset_password: "Tetapkan semula kata laluan"
|
||||
send_password_instructions: "Hantar saya arahan menetap semula kata laluan"
|
||||
send_instructions: "Anda akan menerima e-mel dengan arahan mengenai cara untuk menetapkan semula kata laluan anda dalam beberapa minit."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ nb:
|
|||
new:
|
||||
email: "E-post"
|
||||
forgot_password: "Glemt passordet?"
|
||||
no_account: "Det finnes ingen bruker med denne e-post adressen. Hvis du venter på en invitasjon, sender vi dem ut så snart vi kan."
|
||||
reset_password: "Resett passord"
|
||||
send_password_instructions: "Send meg instruksjoner for å tilbakestille passordet"
|
||||
no_token: "Du kan ikke se denne siden uten å komme fra en e-post for å tilbakestille passord. Dersom du kom fra en e-post for å tilbakestille passord, sørg for at du bruker den fullstendige URL-en som ble oppgitt i e-posten."
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ nds:
|
|||
new:
|
||||
email: "E-Mail-Adress"
|
||||
forgot_password: "Hest du dien Passwoort vergeten?"
|
||||
no_account: "Dat gift keen Konto mit disse E-Mail-Adress"
|
||||
reset_password: "Passwoort trüchsetten"
|
||||
send_password_instructions: "Schick mi Anwiesungen ton Trüchsetten von mien Passwoort"
|
||||
updated: "Dien Passwoort is erfolgriek ännert worn. Du bist nu anmeld."
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ nl:
|
|||
new:
|
||||
email: "E-mailadres"
|
||||
forgot_password: "Wachtwoord vergeten?"
|
||||
no_account: "Er bestaat geen account met dit e-mailadres"
|
||||
reset_password: "Herstel wachtwoord"
|
||||
send_password_instructions: "Stuur mij instructies om mijn wachtwoord te resetten"
|
||||
send_instructions: "Je ontvangt binnen enkele minuten een e-mail met instructies om je wachtwoord opnieuw in te stellen."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ nn:
|
|||
change_password: "Endra passordet mitt"
|
||||
new:
|
||||
forgot_password: "Har du gløymt passordet ditt?"
|
||||
no_account: "Det finst ingen konto med denne e-postadressa. Om du ventar på ein invitasjon, skal du veta at vi sender dei ut så fort vi kan."
|
||||
send_password_instructions: "Send meg opplysningar om korleis nullstilla passordet"
|
||||
send_instructions: "Om ei lita stund vil du få ein e-post med opplysningar om korleis du kan nullstilla passordet ditt."
|
||||
updated: "Passordet ditt vart endra. Du er no pålogga."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ oc:
|
|||
new:
|
||||
email: "Adreça de corrièl"
|
||||
forgot_password: "Avètz oblidat vòstre senhal ?"
|
||||
no_account: "Cap de compte es pas associat a aquesta adreça de corrièr electronic."
|
||||
reset_password: "Reïnicializar lo senhal"
|
||||
send_password_instructions: "Mandar las instruccions de reïnicializacion de senhal"
|
||||
no_token: "Podètz pas accedir a aquesta pagina sens venir d'un corrièl de reïnicializacion de senhal. S'es lo cas, mercés de vos assegurar qu'avètz utilizat l'URL completa."
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ pa:
|
|||
change_password: "ਮੇਰਾ ਪਾਸਵਰਡ ਬਦਲੋ"
|
||||
new:
|
||||
forgot_password: "ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?"
|
||||
no_account: "No account with this email exsists. If you are waiting for an invite, we are rolling them out as soon as possible"
|
||||
updated: "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਠੀਕ ਤਹ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ ਹੈ। ਹੁਣ ਤੁਸੀਂ ਸਾਈਨ ਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
|
||||
sessions:
|
||||
new:
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ pl:
|
|||
new:
|
||||
email: "Adres e-mail"
|
||||
forgot_password: "Nie pamiętasz hasła?"
|
||||
no_account: "Konto z podanym adresem e-mail nie istnieje"
|
||||
reset_password: "Resetuj hasło"
|
||||
send_password_instructions: "Wyślij mi instrukcję resetowania hasła"
|
||||
no_token: "Nie możesz pomyślnie odwiedzić tej strony w inny sposób niż poprzez kliknięcie odnośnika w e-mailu resetu hasła. Jeśli znalazłeś się tutaj właśnie przez tego typu e-mail, upewnij się, że kliknąłeś lub wkleiłeś pełny adres URL."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ pt-BR:
|
|||
new:
|
||||
email: "Endereço de email"
|
||||
forgot_password: "Esqueceu sua senha?"
|
||||
no_account: "Não há nenhuma conta com este email"
|
||||
reset_password: "Resetar senha"
|
||||
send_password_instructions: "Envie-me instruções para redefinir minha senha."
|
||||
no_token: "Você só pode acessar esta página a partir de um e-mail de recuperação de senha. Se esse é o caso, certifique-se que usou o URL fornecido completo."
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ pt-PT:
|
|||
new:
|
||||
email: "Endereço de e-mail"
|
||||
forgot_password: "Esqueceu a sua palavra-passe?"
|
||||
no_account: "Não existe nenhuma conta com este e-mail."
|
||||
reset_password: "Redefinir palavra-passe"
|
||||
send_password_instructions: "Enviem-me instruções para redefinir a minha palavra-passe"
|
||||
send_instructions: "Dentro de alguns minutos irá receber uma mensagem com as instruções sobre como redefinir a sua palavra-passe."
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ ro:
|
|||
change_password: "Schimbă-mi parola"
|
||||
new:
|
||||
forgot_password: "Aţi uitat parola?"
|
||||
no_account: "Nici un cont cu acest e-mail există. Dacă sunteţi în aşteptare pentru o invitaţie, le vom trimite cât mai curând posibil.\n"
|
||||
send_password_instructions: "Trimite-mi instrucţiunile pentru a reseta parola"
|
||||
send_instructions: "În scurt timp veți primi un email cu instrucțiuni pentru resetarea parolei."
|
||||
updated: "Parolă schimbată cu success. Sunteți acum autentificat(ă)."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ ru:
|
|||
new:
|
||||
email: "E-mail"
|
||||
forgot_password: "Забыли пароль?"
|
||||
no_account: "Аккаунт с таким E-mail не существует"
|
||||
reset_password: "Сброс пароля"
|
||||
send_password_instructions: "Отправить мне инструкции по сбросу пароля"
|
||||
no_token: "Эта страница доступна только из письма по сбросу пароля. Если вы пришли по ссылке из такого письма, то удостоверьтесь, что использовали полный путь, указаный в ссылке."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ sc:
|
|||
new:
|
||||
email: "Indiritzu de p. eletrònica"
|
||||
forgot_password: "As ismentigadu sa crae tua?"
|
||||
no_account: "Non b'est unu contu cun custu indiritzu de p. eletrònica"
|
||||
reset_password: "Torra a impostare sa crae"
|
||||
send_password_instructions: "Imbia·mi sas istrutziones pro torrare a impostare sa crae"
|
||||
no_token: "Non podes intrare in custa pàgina chene partire dae una lìtera de posta eletrònica pro s'impostatzione de sa crae. Si benis dae una de cussas lìteras ista atentu a impreare s'URL intreu frunidu."
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ sk:
|
|||
new:
|
||||
email: "E-mailová adresa"
|
||||
forgot_password: "Zabudol (-la) si heslo?"
|
||||
no_account: "Účet s takouto e-mailovou adresou neexistuje"
|
||||
reset_password: "Obnoviť heslo"
|
||||
send_password_instructions: "Pošlite mi pokyny na zmenu hesla"
|
||||
no_token: "Na túto stránku sa môžeš dostať iba z e-mailu na obnovenie hesla. Ak ideš z neho, skontroluj, či si zadal/a/ celú URL adresu."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ sl:
|
|||
change_password: "Spremeni geslo"
|
||||
new:
|
||||
forgot_password: "Ste pozabili geslo?"
|
||||
no_account: "Uporabniški račun s tem e-naslovom ne obstaja. V kolikor še čakate na povabilo, vas prosimo za potrpljenje."
|
||||
send_password_instructions: "Pošlji navodila za ponastavitev gesla"
|
||||
send_instructions: "V nekaj minutah boste prejeli e-pošto z navodili za ponastavitev vašega gesla."
|
||||
updated: "Vaše geslo je bilo uspešno spremenjeno. Zdaj ste prijavljeni."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ sr:
|
|||
change_password: "Промени лозинку"
|
||||
new:
|
||||
forgot_password: "Заборавили сте лозинку?"
|
||||
no_account: "Не постоји налог са овим имејлом. Ако чекаш позивницу, послаћемо је што пре можемо."
|
||||
send_password_instructions: "Пошаљите ми упутство за промену лозинке."
|
||||
send_instructions: "За пар минута ћеш примити имејл са упутством како да промениш лозинку."
|
||||
updated: "Успешно сте променили лозинку. Сада сте пријављени."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ sv:
|
|||
new:
|
||||
email: "E-postadress"
|
||||
forgot_password: "Har du glömt ditt lösenord?"
|
||||
no_account: "Det finns inget konto med den här e-postadressen."
|
||||
reset_password: "Återställ lösenord"
|
||||
send_password_instructions: "Skicka information om hur jag återställer lösenordet"
|
||||
no_token: "Du får inte tillgång till den här sidan utan en länk för att ställa in ett nytt lösenord via e-post. Om du kom hit genom en sådan, kontrollera att de använde hela URL:en som angavs."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ te:
|
|||
new:
|
||||
email: "ఈమెయిలు చిరునామా"
|
||||
forgot_password: "మీ సంకేతపదాన్ని మర్చిపోయారా?"
|
||||
no_account: "ఈ ఈమెయిలుతో ఎటువంటి ఖాతా లేదు"
|
||||
reset_password: "సంకేతపదం మళ్ళీపెట్టు"
|
||||
send_password_instructions: "నాకు పాస్వర్డ్ను పునరుద్ధరించడానికి సూచనలను పంపండి"
|
||||
send_instructions: "మీకు కొన్ని నిమిషాల్లో మీ సంకేతపదాన్ని పునరుద్ధరించడానికి సూచనలతో ఈమెయిల్ వస్తుంది."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ tr:
|
|||
change_password: "Parola değiştirme"
|
||||
new:
|
||||
forgot_password: "Parolanızı mı unuttunuz?"
|
||||
no_account: "Bu e-posta adresiyle alınmış hesap bulunmamaktadır. Eğer bir davetiye için bekliyorsanız, en kısa zamanda size ulaştıracağız."
|
||||
send_password_instructions: "Bana parola yenileme talimatları gönder"
|
||||
send_instructions: "Bir kaç dakika içerisinde parolanızı nasıl sıfırlayacağınızı açıklayan bir e-posta alacaksınız."
|
||||
updated: "Parolanız değiştirilmiştir. Şu anda giriş yapmış bulunuyorsunuz."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ uk:
|
|||
new:
|
||||
email: "E-mail"
|
||||
forgot_password: "Забули пароль?"
|
||||
no_account: "Аккаунт з таким E-mail не існує"
|
||||
reset_password: "Зміна паролю"
|
||||
send_password_instructions: "Відправити мені інструкції зі скидання пароля"
|
||||
no_token: "Ви не можете отримати доступ до цієї сторінки, не прийшовши скидання пароля з електронної пошти. Якщо ви прийшли з електронної пошти для скидання пароля, будь ласка, переконайтеся, що ви використовували повний URL."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ vi:
|
|||
change_password: "Đổi mật khẩu"
|
||||
new:
|
||||
forgot_password: "Quên mật khẩu?"
|
||||
no_account: "Không có tài khoản nào với địa chỉ thư điện tử này. Nếu bạn đang chờ để được mời, chúng tôi sẽ cố gắng sớm nhất có thể"
|
||||
send_password_instructions: "Gửi cho tôi hướng dẫn thiết đặt lại mật khẩu"
|
||||
send_instructions: "Bạn sẽ nhận được thư chứa chỉ dẫn cách thiết lập lại mật khẩu trong ít phút nữa."
|
||||
updated: "Đã đổi mật khẩu. Bạn đã đăng nhập."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ zh-CN:
|
|||
change_password: "修改密码"
|
||||
new:
|
||||
forgot_password: "忘记密码?"
|
||||
no_account: "暂无与此邮箱关联的帐号。如果您在等待邀请函, 我们将尽快寄出."
|
||||
send_password_instructions: "请向我发送密码重置步骤"
|
||||
send_instructions: "几分钟内您将收到一封包含密码重置步骤的邮件。"
|
||||
updated: "密码修改成功。您已经登入了。"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue