From 4687d7e1ea8e372e4f33702389092a02e1eb745c Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Tue, 19 Feb 2019 01:48:11 +0100 Subject: Start 0.7.11.0 cycle --- Changelog.md | 8 ++++++++ config/defaults.yml | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index da1266025..b20d946c6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,11 @@ +# 0.7.11.0 + +## Refactor + +## Bug fixes + +## Features + # 0.7.10.0 ## Refactor diff --git a/config/defaults.yml b/config/defaults.yml index 813c6fbd6..c04665f69 100644 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -4,7 +4,7 @@ defaults: version: - number: "0.7.9.99" # Do not touch unless doing a release, do not backport the version number that's in master + number: "0.7.10.99" # Do not touch unless doing a release, do not backport the version number that's in master heroku: false environment: url: "http://localhost:3000/" -- cgit v1.2.3 From 94a32b2833e11d44b76d532417c624b5b9c9e95f Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 23 Mar 2019 23:52:42 +0100 Subject: Bump rails --- Gemfile | 2 +- Gemfile.lock | 78 ++++++++++++++++++++++++++++++------------------------------ 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Gemfile b/Gemfile index b7ae543c9..03157827c 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "rails", "5.1.6" +gem "rails", "5.1.6.2" # Legacy Rails features, remove me! # responders (class level) diff --git a/Gemfile.lock b/Gemfile.lock index e2f46878b..20b0b6c0d 100644 --- a/Gemfile.lock +++ b/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 (>= 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) @@ -125,7 +125,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) @@ -194,7 +194,7 @@ GEM 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) @@ -257,7 +257,7 @@ GEM gitlab (4.7.0) httparty (>= 0.14.0) terminal-table (>= 1.5.1) - globalid (0.4.1) + globalid (0.4.2) activesupport (>= 4.2.0) gon (6.2.1) actionpack (>= 3.0) @@ -313,7 +313,7 @@ GEM 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) @@ -502,17 +502,17 @@ GEM 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) @@ -575,16 +575,16 @@ GEM rails-timeago (2.16.0) 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) @@ -841,7 +841,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)! @@ -904,4 +904,4 @@ DEPENDENCIES will_paginate (= 3.1.6) BUNDLED WITH - 1.17.1 + 1.17.3 -- cgit v1.2.3 From c063f6fa1b693137368eaef68482aedd10e9fe26 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 23 Mar 2019 23:55:04 +0100 Subject: Bump devise --- Gemfile | 2 +- Gemfile.lock | 4 ++-- app/views/devise/confirmations/new.html.haml | 4 ++-- app/views/devise/passwords/edit.mobile.haml | 2 +- app/views/devise/passwords/new.haml | 2 +- app/views/devise/passwords/new.mobile.haml | 2 +- app/views/devise/unlocks/new.html.haml | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index 03157827c..2e6eb08ab 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,7 @@ gem "json-schema", "2.8.1" # Authentication -gem "devise", "4.5.0" +gem "devise", "4.6.1" gem "devise_lastseenable", "0.0.6" # Captcha diff --git a/Gemfile.lock b/Gemfile.lock index 20b0b6c0d..65e2e7a09 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -163,7 +163,7 @@ 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) @@ -780,7 +780,7 @@ DEPENDENCIES cucumber-api-steps (= 0.14) cucumber-rails (= 1.6.0) database_cleaner (= 1.7.0) - devise (= 4.5.0) + devise (= 4.6.1) devise_lastseenable (= 0.0.6) diaspora-prosody-config (= 0.0.7) diaspora_federation-json_schema (= 0.2.5) diff --git a/app/views/devise/confirmations/new.html.haml b/app/views/devise/confirmations/new.html.haml index 04965f756..b1a4555d8 100644 --- a/app/views/devise/confirmations/new.html.haml +++ b/app/views/devise/confirmations/new.html.haml @@ -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" diff --git a/app/views/devise/passwords/edit.mobile.haml b/app/views/devise/passwords/edit.mobile.haml index a9d7df344..b3d758b12 100644 --- a/app/views/devise/passwords/edit.mobile.haml +++ b/app/views/devise/passwords/edit.mobile.haml @@ -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 diff --git a/app/views/devise/passwords/new.haml b/app/views/devise/passwords/new.haml index 627aa3a1d..9a5683b63 100644 --- a/app/views/devise/passwords/new.haml +++ b/app/views/devise/passwords/new.haml @@ -9,7 +9,7 @@ = 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? + - unless resource.errors.empty? %legend %i = t('devise.passwords.new.no_account') # this is an error message and should not be displayed as a legend diff --git a/app/views/devise/passwords/new.mobile.haml b/app/views/devise/passwords/new.mobile.haml index af496b0bf..63bcedfd8 100644 --- a/app/views/devise/passwords/new.mobile.haml +++ b/app/views/devise/passwords/new.mobile.haml @@ -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 diff --git a/app/views/devise/unlocks/new.html.haml b/app/views/devise/unlocks/new.html.haml index 6fff589eb..d3f1d629d 100644 --- a/app/views/devise/unlocks/new.html.haml +++ b/app/views/devise/unlocks/new.html.haml @@ -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" -- cgit v1.2.3 From c253272d8397b3270bc79daf9147fa6f2ec434e3 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 23 Mar 2019 23:59:50 +0100 Subject: Bump bootstrap-sass --- Gemfile | 2 +- Gemfile.lock | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 2e6eb08ab..144bf1cbb 100644 --- a/Gemfile +++ b/Gemfile @@ -57,7 +57,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" diff --git a/Gemfile.lock b/Gemfile.lock index 65e2e7a09..f9b622fa9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -66,9 +66,9 @@ GEM backports (3.11.4) 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) @@ -639,6 +639,9 @@ 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) @@ -770,7 +773,7 @@ DEPENDENCIES addressable (= 2.5.2) asset_sync (= 2.5.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) -- cgit v1.2.3 From 360780c17ff3f2d6c6bee321f10b960f604fa22e Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:13:26 +0100 Subject: Bump responders --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 144bf1cbb..a911d3a7e 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ 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 diff --git a/Gemfile.lock b/Gemfile.lock index f9b622fa9..ef71b1f4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -593,9 +593,9 @@ GEM 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) rspec (3.8.0) rspec-core (~> 3.8.0) rspec-expectations (~> 3.8.0) @@ -874,7 +874,7 @@ DEPENDENCIES rb-inotify (= 0.9.10) redcarpet (= 3.4.0) redis (= 3.3.5) - responders (= 2.4.0) + responders (= 2.4.1) rspec-json_expectations (~> 2.1) rspec-rails (= 3.8.1) rubocop (= 0.60.0) -- cgit v1.2.3 From 23d637b9a12d576ce54b3468e2fa10c26524781c Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:19:37 +0100 Subject: Bump unicorn --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index a911d3a7e..2aaaf1da4 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ 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 diff --git a/Gemfile.lock b/Gemfile.lock index ef71b1f4d..2c908bd98 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -726,7 +726,7 @@ GEM unf_ext unf_ext (0.0.7.5) unicode-display_width (1.4.0) - unicorn (5.4.1) + unicorn (5.5.0) kgio (~> 2.6) raindrops (~> 0.7) unicorn-worker-killer (0.4.4) @@ -899,7 +899,7 @@ DEPENDENCIES twitter-text (= 1.14.7) typhoeus (= 1.3.1) uglifier (= 4.1.19) - unicorn (= 5.4.1) + unicorn (= 5.5.0) unicorn-worker-killer (= 0.4.4) uuid (= 2.3.9) versionist (= 1.7.0) -- cgit v1.2.3 From f4fa7e10bdb67aaa5da6221f69e85299d5355474 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:21:37 +0100 Subject: Bump json --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 2aaaf1da4..fe9efa706 100644 --- a/Gemfile +++ b/Gemfile @@ -21,7 +21,7 @@ gem "diaspora_federation-rails", "0.2.5" # 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 diff --git a/Gemfile.lock b/Gemfile.lock index 2c908bd98..b6e6dce7a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -340,7 +340,7 @@ GEM js_image_paths (0.1.1) rails (>= 4.0, < 6.0) sprockets (>= 3.0.0) - json (2.1.0) + json (2.2.0) json-jwt (1.9.4) activesupport aes_key_wrap @@ -812,7 +812,7 @@ 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) -- cgit v1.2.3 From 7b201f4bb907894205a3399f03e1bdbac6ad57b8 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:25:26 +0100 Subject: Bump sidekiq --- Gemfile | 2 +- Gemfile.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index fe9efa706..776edde77 100644 --- a/Gemfile +++ b/Gemfile @@ -36,7 +36,7 @@ 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 diff --git a/Gemfile.lock b/Gemfile.lock index b6e6dce7a..b1fdf4924 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -495,7 +495,7 @@ 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) @@ -652,8 +652,9 @@ GEM shellany (0.0.1) shoulda-matchers (3.1.2) activesupport (>= 4.0.0) - sidekiq (5.2.3) + 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) @@ -883,7 +884,7 @@ DEPENDENCIES sass-rails (= 5.0.7) secure_headers (= 6.0.0) shoulda-matchers (= 3.1.2) - sidekiq (= 5.2.3) + sidekiq (= 5.2.5) sidekiq-cron (= 1.0.4) simple_captcha2 (= 0.4.3) simplecov (= 0.16.1) -- cgit v1.2.3 From a63f11bbf47dd531dcd7c82d9919603c75ced501 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:30:24 +0100 Subject: Bump sidekiq-cron --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 776edde77..9f7d81dae 100644 --- a/Gemfile +++ b/Gemfile @@ -40,7 +40,7 @@ gem "sidekiq", "5.2.5" # Scheduled processing -gem "sidekiq-cron", "1.0.4" +gem "sidekiq-cron", "1.1.0" # Compression diff --git a/Gemfile.lock b/Gemfile.lock index b1fdf4924..f5a751538 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -199,7 +199,7 @@ GEM execjs multi_json (>= 1.3) rake - et-orbi (1.1.6) + et-orbi (1.1.7) tzinfo ethon (0.11.0) ffi (>= 1.3.0) @@ -246,8 +246,8 @@ 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) @@ -657,7 +657,7 @@ GEM 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) @@ -885,7 +885,7 @@ DEPENDENCIES secure_headers (= 6.0.0) shoulda-matchers (= 3.1.2) sidekiq (= 5.2.5) - sidekiq-cron (= 1.0.4) + sidekiq-cron (= 1.1.0) simple_captcha2 (= 0.4.3) simplecov (= 0.16.1) sinon-rails (= 1.15.0) -- cgit v1.2.3 From 54e44d6d7e8c65831bed6e704d8ecf219a75d720 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:35:46 +0100 Subject: Bump uglifier --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 9f7d81dae..60c06e4a7 100644 --- a/Gemfile +++ b/Gemfile @@ -44,7 +44,7 @@ gem "sidekiq-cron", "1.1.0" # Compression -gem "uglifier", "4.1.19" +gem "uglifier", "4.1.20" # Configuration diff --git a/Gemfile.lock b/Gemfile.lock index f5a751538..573aafc21 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -721,7 +721,7 @@ 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 @@ -899,7 +899,7 @@ DEPENDENCIES twitter (= 6.2.0) twitter-text (= 1.14.7) typhoeus (= 1.3.1) - uglifier (= 4.1.19) + uglifier (= 4.1.20) unicorn (= 5.5.0) unicorn-worker-killer (= 0.4.4) uuid (= 2.3.9) -- cgit v1.2.3 From cd7af6df5054b9a6ed4e444f71dd8c4ebb173c0a Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:45:11 +0100 Subject: Bump pg --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 60c06e4a7..fe3e3e7e3 100644 --- a/Gemfile +++ b/Gemfile @@ -69,7 +69,7 @@ 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 diff --git a/Gemfile.lock b/Gemfile.lock index 573aafc21..88ed0cb3a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -447,7 +447,7 @@ GEM parallel (1.12.1) parser (2.5.3.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) @@ -831,7 +831,7 @@ DEPENDENCIES 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) -- cgit v1.2.3 From b7183d7cee490a58f0f105ec3a13f39a880ae965 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:46:37 +0100 Subject: Bump activerecord-import --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index fe3e3e7e3..154209619 100644 --- a/Gemfile +++ b/Gemfile @@ -73,7 +73,7 @@ group :postgresql, optional: true do end -gem "activerecord-import", "0.27.0" +gem "activerecord-import", "1.0.1" # File uploading diff --git a/Gemfile.lock b/Gemfile.lock index 88ed0cb3a..1db1348a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,7 +37,7 @@ GEM 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.2) concurrent-ruby (~> 1.0, >= 1.0.2) @@ -768,7 +768,7 @@ PLATFORMS 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) -- cgit v1.2.3 From da83456660e14b7d1144a4e9ab1996ff3034589a Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:48:19 +0100 Subject: Bump carrierwave --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 154209619..4252f8852 100644 --- a/Gemfile +++ b/Gemfile @@ -77,7 +77,7 @@ gem "activerecord-import", "1.0.1" # File uploading -gem "carrierwave", "1.2.3" +gem "carrierwave", "1.3.1" gem "fog-aws", "3.3.0" gem "mini_magick", "4.9.2" diff --git a/Gemfile.lock b/Gemfile.lock index 1db1348a1..b010ad82c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -81,7 +81,7 @@ 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) @@ -777,7 +777,7 @@ DEPENDENCIES bootstrap-sass (= 3.4.1) bootstrap-switch-rails (= 3.3.3) capybara (= 3.11.1) - carrierwave (= 1.2.3) + carrierwave (= 1.3.1) compass-rails (= 3.1.0) configurate (= 0.3.1) coveralls (= 0.8.22) -- cgit v1.2.3 From c8bef1077d7983c49a80895df852579665fba7d4 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:50:19 +0100 Subject: Bump fog-aws --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 4252f8852..76d31432d 100644 --- a/Gemfile +++ b/Gemfile @@ -78,7 +78,7 @@ gem "activerecord-import", "1.0.1" # File uploading gem "carrierwave", "1.3.1" -gem "fog-aws", "3.3.0" +gem "fog-aws", "3.4.0" gem "mini_magick", "4.9.2" # GUID generation diff --git a/Gemfile.lock b/Gemfile.lock index b010ad82c..210df81d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,7 +229,7 @@ GEM 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) @@ -797,7 +797,7 @@ DEPENDENCIES 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) -- cgit v1.2.3 From 8a10655f7f323658a425648ebdea106397f8c863 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:54:54 +0100 Subject: Bump mini_magick --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 76d31432d..86e8ae7ab 100644 --- a/Gemfile +++ b/Gemfile @@ -79,7 +79,7 @@ gem "activerecord-import", "1.0.1" gem "carrierwave", "1.3.1" gem "fog-aws", "3.4.0" -gem "mini_magick", "4.9.2" +gem "mini_magick", "4.9.3" # GUID generation gem "uuid", "2.3.9" diff --git a/Gemfile.lock b/Gemfile.lock index 210df81d1..85108a3ff 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -384,7 +384,7 @@ 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) minitest (5.11.3) @@ -820,7 +820,7 @@ DEPENDENCIES 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) -- cgit v1.2.3 From adaca8d0a3c76ead7a1eb437b5eec335d8503efd Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:55:47 +0100 Subject: Bump handlebars_assets --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 86e8ae7ab..727325584 100644 --- a/Gemfile +++ b/Gemfile @@ -90,7 +90,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" diff --git a/Gemfile.lock b/Gemfile.lock index 85108a3ff..b14419412 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -293,7 +293,7 @@ GEM 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) @@ -698,7 +698,7 @@ GEM 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) tins (1.20.2) @@ -805,7 +805,7 @@ DEPENDENCIES guard-rubocop (= 1.3.0) haml_lint (= 0.28.0) hamlit (= 2.9.1) - handlebars_assets (= 0.23.2) + handlebars_assets (= 0.23.3) http_accept_language (= 2.1.1) i18n-inflector-rails (= 1.0.7) jasmine (= 3.3.0) -- cgit v1.2.3 From 3b0f435f6941f2dc84d57c0779e9c927588388cf Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 00:58:58 +0100 Subject: Bump rails-i18n --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 727325584..5de91f9c5 100644 --- a/Gemfile +++ b/Gemfile @@ -129,7 +129,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 diff --git a/Gemfile.lock b/Gemfile.lock index b14419412..d81e1503d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -569,7 +569,7 @@ GEM 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) @@ -869,7 +869,7 @@ DEPENDENCIES 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-i18n (= 5.1.3) rails-timeago (= 2.16.0) rb-fsevent (= 0.10.3) rb-inotify (= 0.9.10) -- cgit v1.2.3 From da39750244147de1d48d9c20bf85eeaad67016e4 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:03:03 +0100 Subject: Bump nokogiri --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 5de91f9c5..1936e71b0 100644 --- a/Gemfile +++ b/Gemfile @@ -140,7 +140,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" diff --git a/Gemfile.lock b/Gemfile.lock index d81e1503d..e20134a40 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -386,7 +386,7 @@ GEM mime-types-data (3.2018.0812) 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 +399,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) @@ -824,7 +824,7 @@ DEPENDENCIES minitest mobile-fu (= 1.4.0) mysql2 (= 0.5.2) - nokogiri (= 1.8.5) + nokogiri (= 1.10.1) omniauth (= 1.8.1) omniauth-tumblr (= 1.2) omniauth-twitter (= 1.4.0) -- cgit v1.2.3 From 05472cc4f9e5a3f8f38571e8a8dd14da39862b15 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:04:54 +0100 Subject: Bump secure_headers --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 1936e71b0..42062cd61 100644 --- a/Gemfile +++ b/Gemfile @@ -152,7 +152,7 @@ gem "string-direction", "1.2.1" # Security Headers -gem "secure_headers", "6.0.0" +gem "secure_headers", "6.1.0" # Services diff --git a/Gemfile.lock b/Gemfile.lock index e20134a40..c00491bb1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -648,7 +648,7 @@ GEM 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) @@ -882,7 +882,7 @@ DEPENDENCIES ruby-oembed (= 0.12.0) rubyzip (= 1.2.2) sass-rails (= 5.0.7) - secure_headers (= 6.0.0) + secure_headers (= 6.1.0) shoulda-matchers (= 3.1.2) sidekiq (= 5.2.5) sidekiq-cron (= 1.1.0) -- cgit v1.2.3 From 0372924b9053daf7bd7bf5a51fc0b09f7c3a1549 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:05:50 +0100 Subject: Bump omniauth --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 42062cd61..92b75ecf4 100644 --- a/Gemfile +++ b/Gemfile @@ -156,7 +156,7 @@ 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" diff --git a/Gemfile.lock b/Gemfile.lock index c00491bb1..f802fc6eb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -298,7 +298,7 @@ GEM sprockets (>= 2.0.0) tilt (>= 1.2) hashdiff (0.3.7) - hashie (3.5.7) + hashie (3.6.0) http (3.3.0) addressable (~> 2.3) http-cookie (~> 1.0) @@ -413,8 +413,8 @@ 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 @@ -825,7 +825,7 @@ DEPENDENCIES mobile-fu (= 1.4.0) mysql2 (= 0.5.2) nokogiri (= 1.10.1) - omniauth (= 1.8.1) + omniauth (= 1.9.0) omniauth-tumblr (= 1.2) omniauth-twitter (= 1.4.0) omniauth-wordpress (= 0.2.2) -- cgit v1.2.3 From 02617a3562e496eac2acfacbfc63bc3122d6ee71 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:11:09 +0100 Subject: Bump faraday --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 92b75ecf4..7f7c3abb1 100644 --- a/Gemfile +++ b/Gemfile @@ -180,7 +180,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" diff --git a/Gemfile.lock b/Gemfile.lock index f802fc6eb..61272e2de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -217,7 +217,7 @@ 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) @@ -793,7 +793,7 @@ DEPENDENCIES 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) -- cgit v1.2.3 From 2585fb9b49603f187a3d0d1390fb01beb66a4673 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:13:59 +0100 Subject: Bump hamlit --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 7f7c3abb1..977be7c1a 100644 --- a/Gemfile +++ b/Gemfile @@ -188,7 +188,7 @@ 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" diff --git a/Gemfile.lock b/Gemfile.lock index 61272e2de..bc91ee94e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -289,7 +289,7 @@ 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 @@ -691,7 +691,7 @@ GEM httpclient (>= 2.4) sysexits (1.2.0) systemu (2.6.5) - temple (0.8.0) + temple (0.8.1) term-ansicolor (1.7.0) tins (~> 1.0) terminal-table (1.8.0) @@ -804,7 +804,7 @@ DEPENDENCIES guard-rspec (= 4.7.3) guard-rubocop (= 1.3.0) haml_lint (= 0.28.0) - hamlit (= 2.9.1) + hamlit (= 2.9.2) handlebars_assets (= 0.23.3) http_accept_language (= 2.1.1) i18n-inflector-rails (= 1.0.7) -- cgit v1.2.3 From 5195f7daacee1c4f3ea4ca772f9a4217ebbb16cb Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:15:50 +0100 Subject: Bump rails-timeago --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 977be7c1a..84b1673f0 100644 --- a/Gemfile +++ b/Gemfile @@ -190,7 +190,7 @@ gem "typhoeus", "1.3.1" gem "gon", "6.2.1" gem "hamlit", "2.9.2" gem "mobile-fu", "1.4.0" -gem "rails-timeago", "2.16.0" +gem "rails-timeago", "2.17.1" gem "will_paginate", "3.1.6" # Logging diff --git a/Gemfile.lock b/Gemfile.lock index bc91ee94e..a256ad56c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -572,7 +572,7 @@ GEM 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.2) @@ -870,7 +870,7 @@ DEPENDENCIES rails-assets-utatti-perfect-scrollbar (= 1.4.0)! rails-controller-testing (= 1.0.2) rails-i18n (= 5.1.3) - rails-timeago (= 2.16.0) + rails-timeago (= 2.17.1) rb-fsevent (= 0.10.3) rb-inotify (= 0.9.10) redcarpet (= 3.4.0) -- cgit v1.2.3 From 6f53f1bc0a6b9fe18da9850082003f413cb2ee90 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:17:03 +0100 Subject: Bump will_paginate --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 84b1673f0..327adc13c 100644 --- a/Gemfile +++ b/Gemfile @@ -191,7 +191,7 @@ gem "gon", "6.2.1" gem "hamlit", "2.9.2" gem "mobile-fu", "1.4.0" gem "rails-timeago", "2.17.1" -gem "will_paginate", "3.1.6" +gem "will_paginate", "3.1.7" # Logging diff --git a/Gemfile.lock b/Gemfile.lock index a256ad56c..cc7bc9cd6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -758,7 +758,7 @@ GEM 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) @@ -905,7 +905,7 @@ DEPENDENCIES uuid (= 2.3.9) versionist (= 1.7.0) webmock (= 3.4.2) - will_paginate (= 3.1.6) + will_paginate (= 3.1.7) BUNDLED WITH 1.17.3 -- cgit v1.2.3 From 7ae2dc62494a729c45dc673cea4ee644e59ebd6e Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:20:00 +0100 Subject: Bump asset_sync --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 327adc13c..9c7a0e1ba 100644 --- a/Gemfile +++ b/Gemfile @@ -234,7 +234,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 diff --git a/Gemfile.lock b/Gemfile.lock index cc7bc9cd6..f2e25f372 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -54,7 +54,7 @@ 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) @@ -772,7 +772,7 @@ DEPENDENCIES 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.4.1) bootstrap-switch-rails (= 3.3.3) -- cgit v1.2.3 From 01468c34ddd844d84cf9ff7c23b0f591013c0a95 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:22:42 +0100 Subject: Bump rb-inotify --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 9c7a0e1ba..32a79f90d 100644 --- a/Gemfile +++ b/Gemfile @@ -243,7 +243,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 diff --git a/Gemfile.lock b/Gemfile.lock index f2e25f372..4a6807cf0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -224,7 +224,7 @@ GEM 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) @@ -586,8 +586,8 @@ GEM raindrops (0.19.0) 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) @@ -872,7 +872,7 @@ DEPENDENCIES 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.1) -- cgit v1.2.3 From 18d7b3803725ce672d9cc7f0b06fb5b3de9438d2 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:41:51 +0100 Subject: Bump rubocop --- Gemfile | 2 +- Gemfile.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index 32a79f90d..719399de1 100644 --- a/Gemfile +++ b/Gemfile @@ -252,7 +252,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 diff --git a/Gemfile.lock b/Gemfile.lock index 4a6807cf0..8724cab3c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -322,7 +322,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 @@ -444,8 +444,8 @@ 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.4) phantomjs (2.1.1.0) @@ -453,7 +453,6 @@ GEM 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) @@ -479,6 +478,7 @@ GEM pry-byebug (3.6.0) byebug (~> 10.0) pry (~> 0.10) + psych (3.1.0) public_suffix (3.0.3) raabro (1.1.6) rack (2.0.6) @@ -618,14 +618,14 @@ 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) @@ -726,7 +726,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.4.0) + unicode-display_width (1.5.0) unicorn (5.5.0) kgio (~> 2.6) raindrops (~> 0.7) @@ -878,7 +878,7 @@ DEPENDENCIES responders (= 2.4.1) rspec-json_expectations (~> 2.1) rspec-rails (= 3.8.1) - rubocop (= 0.60.0) + rubocop (= 0.66.0) ruby-oembed (= 0.12.0) rubyzip (= 1.2.2) sass-rails (= 5.0.7) -- cgit v1.2.3 From 48c4cabd3fa20b23ffc2b15d077f60eb056eae1c Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:44:35 +0100 Subject: Bump byebug --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8724cab3c..8667fc859 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -72,7 +72,7 @@ GEM bootstrap-switch-rails (3.3.3) buftok (0.2.0) builder (3.2.3) - byebug (10.0.2) + byebug (11.0.1) capybara (3.11.1) addressable mini_mime (>= 0.1.3) @@ -475,8 +475,8 @@ 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) -- cgit v1.2.3 From 290ddbf271cf57a8280320e0730bf7807c751dbc Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:48:43 +0100 Subject: Bump capybara --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 719399de1..e84493bd5 100644 --- a/Gemfile +++ b/Gemfile @@ -280,7 +280,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" diff --git a/Gemfile.lock b/Gemfile.lock index 8667fc859..01a5af930 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -73,7 +73,7 @@ GEM buftok (0.2.0) builder (3.2.3) byebug (11.0.1) - capybara (3.11.1) + capybara (3.15.0) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) @@ -776,7 +776,7 @@ DEPENDENCIES autoprefixer-rails (= 8.6.5) bootstrap-sass (= 3.4.1) bootstrap-switch-rails (= 3.3.3) - capybara (= 3.11.1) + capybara (= 3.15.0) carrierwave (= 1.3.1) compass-rails (= 3.1.0) configurate (= 0.3.1) -- cgit v1.2.3 From f8419b14ba160fd4d3db4f1c76f4f00c981f026f Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:51:54 +0100 Subject: Bump shoulda-matchers --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index e84493bd5..cc7ba665b 100644 --- a/Gemfile +++ b/Gemfile @@ -289,7 +289,7 @@ 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 diff --git a/Gemfile.lock b/Gemfile.lock index 01a5af930..801d90d60 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -650,8 +650,8 @@ GEM sass (~> 3.4.20) secure_headers (6.1.0) shellany (0.0.1) - shoulda-matchers (3.1.2) - activesupport (>= 4.0.0) + shoulda-matchers (4.0.1) + activesupport (>= 4.2.0) sidekiq (5.2.5) connection_pool (~> 2.2, >= 2.2.2) rack (>= 1.5.0) @@ -883,7 +883,7 @@ DEPENDENCIES rubyzip (= 1.2.2) sass-rails (= 5.0.7) secure_headers (= 6.1.0) - shoulda-matchers (= 3.1.2) + shoulda-matchers (= 4.0.1) sidekiq (= 5.2.5) sidekiq-cron (= 1.1.0) simple_captcha2 (= 0.4.3) -- cgit v1.2.3 From d9d0eb1512f550725af3196b6b3731e666e9faab Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:53:22 +0100 Subject: Bump webmock --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index cc7ba665b..d0816a507 100644 --- a/Gemfile +++ b/Gemfile @@ -291,7 +291,7 @@ group :test do gem "factory_girl_rails", "4.8.0" 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" diff --git a/Gemfile.lock b/Gemfile.lock index 801d90d60..48506d2d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -297,7 +297,7 @@ GEM execjs (~> 2.0) sprockets (>= 2.0.0) tilt (>= 1.2) - hashdiff (0.3.7) + hashdiff (0.3.8) hashie (3.6.0) http (3.3.0) addressable (~> 2.3) @@ -631,7 +631,7 @@ GEM ruby_dep (1.5.0) rubyzip (1.2.2) rugged (0.27.5) - safe_yaml (1.0.4) + safe_yaml (1.0.5) sass (3.4.25) sass-rails (5.0.7) railties (>= 4.0.0, < 6) @@ -751,7 +751,7 @@ 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 @@ -904,7 +904,7 @@ DEPENDENCIES unicorn-worker-killer (= 0.4.4) uuid (= 2.3.9) versionist (= 1.7.0) - webmock (= 3.4.2) + webmock (= 3.5.1) will_paginate (= 3.1.7) BUNDLED WITH -- cgit v1.2.3 From ccbc65993dc94a969630d205085600d1d23eac92 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:55:39 +0100 Subject: Bump rspec-rails --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index d0816a507..74f41e040 100644 --- a/Gemfile +++ b/Gemfile @@ -301,7 +301,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 diff --git a/Gemfile.lock b/Gemfile.lock index 48506d2d1..90be6c40a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -609,7 +609,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) @@ -877,7 +877,7 @@ DEPENDENCIES redis (= 3.3.5) responders (= 2.4.1) rspec-json_expectations (~> 2.1) - rspec-rails (= 3.8.1) + rspec-rails (= 3.8.2) rubocop (= 0.66.0) ruby-oembed (= 0.12.0) rubyzip (= 1.2.2) -- cgit v1.2.3 From 093cca9a76479a27b557b1b351b0503752960321 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 01:58:26 +0100 Subject: Bump rails-controller-testing --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 74f41e040..f47b36ee2 100644 --- a/Gemfile +++ b/Gemfile @@ -313,5 +313,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 diff --git a/Gemfile.lock b/Gemfile.lock index 90be6c40a..f41f4939c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -560,10 +560,10 @@ 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) @@ -868,7 +868,7 @@ 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-controller-testing (= 1.0.4) rails-i18n (= 5.1.3) rails-timeago (= 2.17.1) rb-fsevent (= 0.10.3) -- cgit v1.2.3 From a28be72e74d34c328f2b90305a610e580803a127 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 24 Mar 2019 02:04:16 +0100 Subject: Bump other dependency gems --- Gemfile.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f41f4939c..a1bd39555 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -63,7 +63,7 @@ GEM 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.4.1) @@ -85,7 +85,7 @@ GEM 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 +106,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) @@ -201,7 +201,7 @@ GEM rake 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) @@ -254,9 +254,9 @@ GEM 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) + 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) @@ -309,7 +309,7 @@ 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) @@ -341,8 +341,8 @@ GEM rails (>= 4.0, < 6.0) sprockets (>= 3.0.0) json (2.2.0) - json-jwt (1.9.4) - activesupport + json-jwt (1.10.0) + activesupport (>= 4.2) aes_key_wrap bindata json-schema (2.8.1) @@ -350,12 +350,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) @@ -419,9 +419,9 @@ GEM 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) @@ -630,7 +630,7 @@ GEM ruby-progressbar (1.10.0) ruby_dep (1.5.0) rubyzip (1.2.2) - rugged (0.27.5) + rugged (0.28.1) safe_yaml (1.0.5) sass (3.4.25) sass-rails (5.0.7) @@ -692,7 +692,7 @@ GEM sysexits (1.2.0) systemu (2.6.5) temple (0.8.1) - term-ansicolor (1.7.0) + term-ansicolor (1.7.1) tins (~> 1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) @@ -700,7 +700,7 @@ GEM thread_safe (0.3.6) 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) @@ -739,9 +739,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) @@ -761,7 +761,7 @@ GEM will_paginate (3.1.7) xpath (3.2.0) nokogiri (~> 1.8) - yard (0.9.16) + yard (0.9.18) PLATFORMS ruby -- cgit v1.2.3 From a38a93523d94c3485adfa49fd826c56e25554ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Fri, 26 Apr 2019 14:41:57 +0200 Subject: Stabilize Diaspora::Federation::Receive.comment.saves the signature data --- spec/lib/diaspora/federation/receive_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/lib/diaspora/federation/receive_spec.rb b/spec/lib/diaspora/federation/receive_spec.rb index deaea880e..1b3e087e7 100644 --- a/spec/lib/diaspora/federation/receive_spec.rb +++ b/spec/lib/diaspora/federation/receive_spec.rb @@ -110,7 +110,8 @@ describe Diaspora::Federation::Receive do expect(comment.signature).not_to be_nil expect(comment.signature.author_signature).to eq("aa") - expect(comment.signature.additional_data).to eq("new_property" => "data", "edited_at" => comment_entity.edited_at) + expect(comment.signature.additional_data["new_property"]).to eq("data") + expect(comment.signature.additional_data["edited_at"]).to be_within(1.second).of(comment_entity.edited_at) expect(comment.signature.order).to eq(comment_entity.signature_order.map(&:to_s)) end -- cgit v1.2.3 From d4434013619e230c1ad4863046a7ae0c80a06c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Fri, 26 Apr 2019 16:33:00 +0200 Subject: Stabilize Diaspora::Federation::Entities.build.builds a comment with edited_at closes #7994 --- spec/lib/diaspora/federation/entities_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/diaspora/federation/entities_spec.rb b/spec/lib/diaspora/federation/entities_spec.rb index 51e67a177..03f625573 100644 --- a/spec/lib/diaspora/federation/entities_spec.rb +++ b/spec/lib/diaspora/federation/entities_spec.rb @@ -63,7 +63,7 @@ describe Diaspora::Federation::Entities do expect(federation_entity.parent_guid).to eq(diaspora_entity.post.guid) expect(federation_entity.text).to eq(diaspora_entity.text) expect(federation_entity.created_at).to eq(diaspora_entity.created_at) - expect(federation_entity.edited_at).to eq(edited_at) + expect(federation_entity.edited_at).to be_within(1.second).of(edited_at) expect(federation_entity.author_signature).to eq(diaspora_entity.signature.author_signature) expect(federation_entity.signature_order.map(&:to_s)).to eq(diaspora_entity.signature.signature_order.order.split) expect(federation_entity.additional_data).to eq(diaspora_entity.signature.additional_data) -- cgit v1.2.3 From 5b6cef0679e7d69d6bbdcca6b1a808c92efdfb39 Mon Sep 17 00:00:00 2001 From: flaburgan Date: Sat, 27 Apr 2019 13:46:33 +0200 Subject: Remove legacy mobile web-capable --- app/assets/images/branding/apple-splash.png | Bin 17720 -> 0 bytes app/controllers/manifest_controller.rb | 22 ++++++++++++++++++++ app/views/application/_head.haml | 30 ---------------------------- app/views/layouts/_head.haml | 28 ++++++++++++++++++++++++++ app/views/layouts/application.html.haml | 2 +- app/views/layouts/application.mobile.haml | 5 ----- config/routes.rb | 1 + 7 files changed, 52 insertions(+), 36 deletions(-) delete mode 100644 app/assets/images/branding/apple-splash.png create mode 100644 app/controllers/manifest_controller.rb delete mode 100644 app/views/application/_head.haml create mode 100644 app/views/layouts/_head.haml diff --git a/app/assets/images/branding/apple-splash.png b/app/assets/images/branding/apple-splash.png deleted file mode 100644 index 8ba65c01d..000000000 Binary files a/app/assets/images/branding/apple-splash.png and /dev/null differ diff --git a/app/controllers/manifest_controller.rb b/app/controllers/manifest_controller.rb new file mode 100644 index 000000000..cf6f5c417 --- /dev/null +++ b/app/controllers/manifest_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class ManifestController < ApplicationController + def show + render json: '{ + "short_name": "diaspora*", + "name": "diaspora*", + "description": "diaspora* is a free, decentralized and privacy respectful social network", + "icons": [ + { + "src": "/icon.png", + "type": "image/png", + "sizes": "192x192" + } + ], + "start_url": "/", + "background_color": "#000000", + "display": "standalone", + "theme_color": "#000000" + }' + end +end diff --git a/app/views/application/_head.haml b/app/views/application/_head.haml deleted file mode 100644 index c8587e9d5..000000000 --- a/app/views/application/_head.haml +++ /dev/null @@ -1,30 +0,0 @@ -%title - = page_title yield(:page_title) - -%meta{charset: "utf-8"}/ -= content_for?(:meta_data) ? yield(:meta_data) : metas_tags - -%meta{content: "yes", name: "mobile-web-app-capable"}/ - -/ favicon -/ For Apple devices -%link{rel: "apple-touch-icon", href: image_path("apple-touch-icon.png")} -/ For Nokia devices -%link{rel: "shortcut icon", href: image_path("apple-touch-icon.png")} -/ All others -%link{rel: "shortcut icon", href: image_path("favicon.png")} - -- if rtl? - = stylesheet_link_tag :rtl, media: "all" - -- if Rails.env.test? - = stylesheet_link_tag :poltergeist_disable_transition, media: "all" - -= jquery_include_tag -= include_gon(camel_case: true, nonce: content_security_policy_nonce(:script)) -= yield(:javascript) - -= csrf_meta_tag -= current_user_atom_tag - -= yield(:head) diff --git a/app/views/layouts/_head.haml b/app/views/layouts/_head.haml new file mode 100644 index 000000000..fcb5eba56 --- /dev/null +++ b/app/views/layouts/_head.haml @@ -0,0 +1,28 @@ +%title + = page_title yield(:page_title) + +%meta{charset: "utf-8"}/ += content_for?(:meta_data) ? yield(:meta_data) : metas_tags + +/ favicon +/ For Apple devices +%link{rel: "apple-touch-icon", href: image_path("apple-touch-icon.png")} +/ For Nokia devices +%link{rel: "shortcut icon", href: image_path("apple-touch-icon.png")} +/ All others +%link{rel: "shortcut icon", href: image_path("favicon.png")} + +- if rtl? + = stylesheet_link_tag :rtl, media: "all" + +- if Rails.env.test? + = stylesheet_link_tag :poltergeist_disable_transition, media: "all" + += jquery_include_tag += include_gon(camel_case: true, nonce: content_security_policy_nonce(:script)) += yield(:javascript) + += csrf_meta_tag += current_user_atom_tag + += yield(:head) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index a50e428aa..63decb11f 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -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}"} diff --git a/app/views/layouts/application.mobile.haml b/app/views/layouts/application.mobile.haml index 233122575..7c57b496d 100644 --- a/app/views/layouts/application.mobile.haml +++ b/app/views/layouts/application.mobile.haml @@ -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" diff --git a/config/routes.rb b/config/routes.rb index 873299b9a..7f1e36102 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -239,4 +239,5 @@ Rails.application.routes.draw do end get ".well-known/openid-configuration", to: "api/openid_connect/discovery#configuration" + get "manifest.json", to: "manifest#show" end -- cgit v1.2.3 From 2073791ceeca5c63554ff58b1d17bc1767e53e79 Mon Sep 17 00:00:00 2001 From: flaburgan Date: Sat, 27 Apr 2019 11:52:48 +0200 Subject: Add a manifest.json file as a first step to make diaspora* a PWA fixes #7997 closes #7998 --- Changelog.md | 1 + app/assets/images/branding/logos/app-icon-512.png | Bin 0 -> 25524 bytes app/assets/images/branding/logos/app-icon.png | Bin 0 -> 8991 bytes app/controllers/manifest_controller.rb | 33 +++++++++++++--------- app/views/layouts/_head.haml | 2 ++ app/views/layouts/application.mobile.haml | 2 +- config/initializers/secure_headers.rb | 3 +- graphics/app-icon.svg | 4 +++ 8 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 app/assets/images/branding/logos/app-icon-512.png create mode 100644 app/assets/images/branding/logos/app-icon.png create mode 100644 graphics/app-icon.svg diff --git a/Changelog.md b/Changelog.md index a20434771..0fe58b64f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,6 +5,7 @@ ## Bug fixes ## 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) # 0.7.10.0 diff --git a/app/assets/images/branding/logos/app-icon-512.png b/app/assets/images/branding/logos/app-icon-512.png new file mode 100644 index 000000000..ec40b1115 Binary files /dev/null and b/app/assets/images/branding/logos/app-icon-512.png differ diff --git a/app/assets/images/branding/logos/app-icon.png b/app/assets/images/branding/logos/app-icon.png new file mode 100644 index 000000000..8c822f46c Binary files /dev/null and b/app/assets/images/branding/logos/app-icon.png differ diff --git a/app/controllers/manifest_controller.rb b/app/controllers/manifest_controller.rb index cf6f5c417..ccc45bdcd 100644 --- a/app/controllers/manifest_controller.rb +++ b/app/controllers/manifest_controller.rb @@ -1,22 +1,27 @@ # frozen_string_literal: true class ManifestController < ApplicationController - def show - render json: '{ - "short_name": "diaspora*", - "name": "diaspora*", - "description": "diaspora* is a free, decentralized and privacy respectful social network", - "icons": [ + 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 respectful social network", + icons: [ { - "src": "/icon.png", - "type": "image/png", - "sizes": "192x192" + 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" - }' + start_url: "/", + background_color: "#000000", + display: "standalone", + theme_color: "#000000" + } end end diff --git a/app/views/layouts/_head.haml b/app/views/layouts/_head.haml index fcb5eba56..a85a96c74 100644 --- a/app/views/layouts/_head.haml +++ b/app/views/layouts/_head.haml @@ -4,6 +4,8 @@ %meta{charset: "utf-8"}/ = content_for?(:meta_data) ? yield(:meta_data) : metas_tags +%link{rel: "manifest", href: "/manifest.json"} + / favicon / For Apple devices %link{rel: "apple-touch-icon", href: image_path("apple-touch-icon.png")} diff --git a/app/views/layouts/application.mobile.haml b/app/views/layouts/application.mobile.haml index 7c57b496d..e9667dbbe 100644 --- a/app/views/layouts/application.mobile.haml +++ b/app/views/layouts/application.mobile.haml @@ -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"}/ diff --git a/config/initializers/secure_headers.rb b/config/initializers/secure_headers.rb index d76d345b5..99d515ac2 100644 --- a/config/initializers/secure_headers.rb +++ b/config/initializers/secure_headers.rb @@ -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? diff --git a/graphics/app-icon.svg b/graphics/app-icon.svg new file mode 100644 index 000000000..f573a1396 --- /dev/null +++ b/graphics/app-icon.svg @@ -0,0 +1,4 @@ + + + + -- cgit v1.2.3 From 035b6f39fcc91f5f18c1d2cc6357d1f9a37001fd Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 27 Apr 2019 19:11:27 +0200 Subject: Change wording of description in PWA manifest --- app/controllers/manifest_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/manifest_controller.rb b/app/controllers/manifest_controller.rb index ccc45bdcd..b4c4c7b82 100644 --- a/app/controllers/manifest_controller.rb +++ b/app/controllers/manifest_controller.rb @@ -5,7 +5,7 @@ class ManifestController < ApplicationController render json: { short_name: AppConfig.settings.pod_name, name: AppConfig.settings.pod_name, - description: "diaspora* is a free, decentralized and privacy respectful social network", + description: "diaspora* is a free, decentralized and privacy-respecting social network", icons: [ { src: helpers.image_path("branding/logos/app-icon.png"), -- cgit v1.2.3 From 91aae4d755504518258c9b4c9aae8baa4eabc2dc Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 28 Apr 2019 11:33:56 +0200 Subject: Fix 500er when calling protocol handler with invalid URL --- app/services/diaspora_link_service.rb | 10 ++++++---- spec/services/diaspora_link_service_spec.rb | 12 ++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/services/diaspora_link_service.rb b/app/services/diaspora_link_service.rb index 1923aa01d..a8ab51420 100644 --- a/app/services/diaspora_link_service.rb +++ b/app/services/diaspora_link_service.rb @@ -10,7 +10,9 @@ class DiasporaLinkService end def find_or_fetch_entity - entity_finder.find || fetch_entity + if type && guid + entity_finder.find || fetch_entity + end end private @@ -38,8 +40,8 @@ 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 + end end end diff --git a/spec/services/diaspora_link_service_spec.rb b/spec/services/diaspora_link_service_spec.rb index bde411a27..fd3f6e6b3 100644 --- a/spec/services/diaspora_link_service_spec.rb +++ b/spec/services/diaspora_link_service_spec.rb @@ -40,5 +40,17 @@ describe DiasporaLinkService do expect(service.find_or_fetch_entity).to be_nil end end + + context "with invalid links" do + it "returns nil when the link is invalid" do + service = described_class.new("web+diaspora://something_invalid") + expect(service.find_or_fetch_entity).to be_nil + end + + it "returns nil when the author is valid, but rest of the link is invalid" do + service = described_class.new("web+diaspora://#{alice.diaspora_handle}/foo/bar") + expect(service.find_or_fetch_entity).to be_nil + end + end end end -- cgit v1.2.3 From 17af65e22cb789c70d464a175b98081e5d1de46e Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 28 Apr 2019 14:00:57 +0200 Subject: Allow links with only the diaspora ID to link to a profile closes #8000 --- Changelog.md | 1 + app/services/diaspora_link_service.rb | 10 ++++++++++ spec/services/diaspora_link_service_spec.rb | 16 ++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/Changelog.md b/Changelog.md index 0fe58b64f..049ce06ba 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,7 @@ ## 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) # 0.7.10.0 diff --git a/app/services/diaspora_link_service.rb b/app/services/diaspora_link_service.rb index a8ab51420..ca8ffea76 100644 --- a/app/services/diaspora_link_service.rb +++ b/app/services/diaspora_link_service.rb @@ -12,6 +12,8 @@ class DiasporaLinkService def find_or_fetch_entity if type && guid entity_finder.find || fetch_entity + elsif author + find_or_fetch_person end end @@ -30,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://") || @@ -42,6 +50,8 @@ class DiasporaLinkService match = DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX.match(link) 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 diff --git a/spec/services/diaspora_link_service_spec.rb b/spec/services/diaspora_link_service_spec.rb index fd3f6e6b3..c65004e31 100644 --- a/spec/services/diaspora_link_service_spec.rb +++ b/spec/services/diaspora_link_service_spec.rb @@ -52,5 +52,21 @@ describe DiasporaLinkService do expect(service.find_or_fetch_entity).to be_nil end end + + context "with only a diaspora ID" do + let(:person) { FactoryGirl.create(:person) } + let(:link) { "diaspora://#{person.diaspora_handle}" } + + it "returns the person" do + expect(service.find_or_fetch_entity).to eq(person) + end + + it "returns nil when person is non fetchable" do + expect(Person).to receive(:find_or_fetch_by_identifier) + .with(person.diaspora_handle).and_raise(DiasporaFederation::Discovery::DiscoveryError) + + expect(service.find_or_fetch_entity).to be_nil + end + end end end -- cgit v1.2.3 From 1e827161fe24c34bcbd92fc686272887b2f6f4d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Sun, 28 Apr 2019 11:08:16 +0200 Subject: rubocop: increase complexity limits [ci skip] --- .rubocop.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 3544f1517..0647b5e48 100644 --- a/.rubocop.yml +++ b/.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 -- cgit v1.2.3 From 3f74a759b3313a65fc00d2e9bc9368a4236ab0cb Mon Sep 17 00:00:00 2001 From: cmrd Senya Date: Sun, 28 Apr 2019 19:28:25 +0300 Subject: Bump diaspora_federation --- Gemfile | 6 +++--- Gemfile.lock | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Gemfile b/Gemfile index f47b36ee2..ec75c2556 100644 --- a/Gemfile +++ b/Gemfile @@ -15,8 +15,8 @@ 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 @@ -293,7 +293,7 @@ group :test do gem "timecop", "0.9.1" 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 diff --git a/Gemfile.lock b/Gemfile.lock index a1bd39555..ead2af7e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -173,18 +173,18 @@ GEM 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) @@ -787,9 +787,9 @@ DEPENDENCIES devise (= 4.6.1) 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) -- cgit v1.2.3 From 9d5b981809435b05b06e300a5495a71085e89882 Mon Sep 17 00:00:00 2001 From: lislis Date: Sun, 28 Apr 2019 19:06:48 +0200 Subject: Two factor authentication (#7751) --- .gitignore | 1 + Changelog.md | 3 +- Gemfile | 2 + Gemfile.lock | 14 +++ app/assets/stylesheets/login.scss | 1 + app/controllers/application_controller.rb | 7 ++ app/controllers/sessions_controller.rb | 50 ++++++++- .../two_factor_authentications_controller.rb | 60 +++++++++++ app/controllers/users_controller.rb | 2 + app/helpers/application_helper.rb | 5 + app/models/user.rb | 11 +- app/views/sessions/two_factor.html.haml | 39 +++++++ app/views/shared/_settings_nav.haml | 2 + .../two_factor_authentications/_activate.haml | 11 ++ app/views/two_factor_authentications/_confirm.haml | 33 ++++++ .../two_factor_authentications/_deactivate.haml | 28 +++++ .../two_factor_authentications/_recovery.haml | 18 ++++ .../two_factor_authentications/_token_form.haml | 4 + .../confirm_2fa.html.haml | 11 ++ .../recovery_codes.html.haml | 12 +++ .../two_factor_authentications/show.html.haml | 15 +++ config/initializers/devise.rb | 9 ++ config/initializers/filter_parameter_logging.rb | 1 + config/locales/diaspora/en.yml | 36 +++++++ config/routes.rb | 6 ++ ...0171229175654_add_devise_two_factor_to_users.rb | 11 ++ ...0302105225_add_two_factor_backupable_to_user.rb | 7 ++ features/desktop/change_password.feature | 3 +- features/desktop/two_factor_authentication.feature | 90 ++++++++++++++++ features/mobile/change_password.feature | 5 +- features/step_definitions/two_factor_steps.rb | 67 ++++++++++++ features/support/paths.rb | 2 + lib/configuration_methods.rb | 30 ++++-- lib/tasks/generate_2fa_encription_key.rake | 24 +++++ .../two_factor_authentications_controller_spec.rb | 120 +++++++++++++++++++++ spec/models/user_spec.rb | 7 ++ 36 files changed, 731 insertions(+), 16 deletions(-) create mode 100644 app/controllers/two_factor_authentications_controller.rb create mode 100644 app/views/sessions/two_factor.html.haml create mode 100644 app/views/two_factor_authentications/_activate.haml create mode 100644 app/views/two_factor_authentications/_confirm.haml create mode 100644 app/views/two_factor_authentications/_deactivate.haml create mode 100644 app/views/two_factor_authentications/_recovery.haml create mode 100644 app/views/two_factor_authentications/_token_form.haml create mode 100644 app/views/two_factor_authentications/confirm_2fa.html.haml create mode 100644 app/views/two_factor_authentications/recovery_codes.html.haml create mode 100644 app/views/two_factor_authentications/show.html.haml create mode 100644 db/migrate/20171229175654_add_devise_two_factor_to_users.rb create mode 100644 db/migrate/20180302105225_add_two_factor_backupable_to_user.rb create mode 100644 features/desktop/two_factor_authentication.feature create mode 100644 features/step_definitions/two_factor_steps.rb create mode 100644 lib/tasks/generate_2fa_encription_key.rake create mode 100644 spec/controllers/two_factor_authentications_controller_spec.rb diff --git a/.gitignore b/.gitignore index 65d3c2649..48f5537ad 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ app/assets/images/custom/ # Configuration files config/diaspora.yml config/initializers/secret_token.rb +config/initializers/twofa_encryption_key.rb .bundle vendor/bundle/ vendor/cache/ diff --git a/Changelog.md b/Changelog.md index 049ce06ba..3f44db66b 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,8 +5,9 @@ ## Bug fixes ## 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) +* 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 diff --git a/Gemfile b/Gemfile index ec75c2556..cd54325d8 100644 --- a/Gemfile +++ b/Gemfile @@ -27,7 +27,9 @@ gem "json-schema", "2.8.1" # Authentication gem "devise", "4.6.1" +gem "devise-two-factor", "3.0.3" gem "devise_lastseenable", "0.0.6" +gem "rqrcode", "0.10.1" # Captcha diff --git a/Gemfile.lock b/Gemfile.lock index ead2af7e0..38e879e6d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -60,6 +60,8 @@ GEM 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 @@ -169,6 +171,12 @@ GEM 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) @@ -191,6 +199,7 @@ GEM 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) @@ -596,6 +605,9 @@ GEM 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) @@ -785,6 +797,7 @@ DEPENDENCIES cucumber-rails (= 1.6.0) database_cleaner (= 1.7.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.6) @@ -876,6 +889,7 @@ DEPENDENCIES redcarpet (= 3.4.0) redis (= 3.3.5) responders (= 2.4.1) + rqrcode (= 0.10.1) rspec-json_expectations (~> 2.1) rspec-rails (= 3.8.2) rubocop (= 0.66.0) diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index b0336a8e0..bdb62a343 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -1,4 +1,5 @@ .page-sessions.action-new, +.page-sessions.action-create, .page-passwords.action-new, .page-passwords.action-edit { padding-top: 25px; diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 89411fb4e..86d763887 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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 diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 0f3bd1c46..9d483a0cc 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -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 diff --git a/app/controllers/two_factor_authentications_controller.rb b/app/controllers/two_factor_authentications_controller.rb new file mode 100644 index 000000000..e5350b38e --- /dev/null +++ b/app/controllers/two_factor_authentications_controller.rb @@ -0,0 +1,60 @@ +# 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 acceptable_code? + current_user.otp_required_for_login = false + current_user.save! + flash[:notice] = t("two_factor_auth.flash.success_deactivation") + else + flash.now[:alert] = t("two_factor_auth.flash.error_token") + 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 + + def acceptable_code? + current_user.validate_and_consume_otp!(params[:two_factor_authentication][:code]) || + current_user.invalidate_otp_backup_code!(params[:two_factor_authentication][:code]) + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1f10ebfc2..726f46f2e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -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 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 213d034b6..36cce9bce 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index 069b0ac77..0f9336eca 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -19,7 +19,15 @@ 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, + attribute :otp_secret + + devise :two_factor_authenticatable, + :two_factor_backupable, + otp_secret_encryption_key: AppConfig.twofa_encryption_key, + 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 +50,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 diff --git a/app/views/sessions/two_factor.html.haml b/app/views/sessions/two_factor.html.haml new file mode 100644 index 000000000..8e40dc411 --- /dev/null +++ b/app/views/sessions/two_factor.html.haml @@ -0,0 +1,39 @@ +- 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") + + = 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" + + .text-center + - if display_password_reset_link? + = link_to t("devise.shared.links.forgot_your_password"), + new_password_path(resource_name), id: "forgot_password_link" + %br + - if display_registration_link? + = link_to t("devise.shared.links.sign_up"), new_registration_path(resource_name) diff --git a/app/views/shared/_settings_nav.haml b/app/views/shared/_settings_nav.haml index e54f3e424..c5e5a3d6c 100644 --- a/app/views/shared/_settings_nav.haml +++ b/app/views/shared/_settings_nav.haml @@ -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, diff --git a/app/views/two_factor_authentications/_activate.haml b/app/views/two_factor_authentications/_activate.haml new file mode 100644 index 000000000..ef6b0a7ff --- /dev/null +++ b/app/views/two_factor_authentications/_activate.haml @@ -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" diff --git a/app/views/two_factor_authentications/_confirm.haml b/app/views/two_factor_authentications/_confirm.haml new file mode 100644 index 000000000..b2ec2af90 --- /dev/null +++ b/app/views/two_factor_authentications/_confirm.haml @@ -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" diff --git a/app/views/two_factor_authentications/_deactivate.haml b/app/views/two_factor_authentications/_deactivate.haml new file mode 100644 index 000000000..c982265de --- /dev/null +++ b/app/views/two_factor_authentications/_deactivate.haml @@ -0,0 +1,28 @@ +.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 :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" + = t("two_factor_auth.recovery.reminder") + .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" diff --git a/app/views/two_factor_authentications/_recovery.haml b/app/views/two_factor_authentications/_recovery.haml new file mode 100644 index 000000000..3f192e7d3 --- /dev/null +++ b/app/views/two_factor_authentications/_recovery.haml @@ -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" diff --git a/app/views/two_factor_authentications/_token_form.haml b/app/views/two_factor_authentications/_token_form.haml new file mode 100644 index 000000000..616cd7a67 --- /dev/null +++ b/app/views/two_factor_authentications/_token_form.haml @@ -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" diff --git a/app/views/two_factor_authentications/confirm_2fa.html.haml b/app/views/two_factor_authentications/confirm_2fa.html.haml new file mode 100644 index 000000000..36a8dcb08 --- /dev/null +++ b/app/views/two_factor_authentications/confirm_2fa.html.haml @@ -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" diff --git a/app/views/two_factor_authentications/recovery_codes.html.haml b/app/views/two_factor_authentications/recovery_codes.html.haml new file mode 100644 index 000000000..98b4490d5 --- /dev/null +++ b/app/views/two_factor_authentications/recovery_codes.html.haml @@ -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" diff --git a/app/views/two_factor_authentications/show.html.haml b/app/views/two_factor_authentications/show.html.haml new file mode 100644 index 000000000..a68902ac9 --- /dev/null +++ b/app/views/two_factor_authentications/show.html.haml @@ -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" diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index bdd334b26..38a1eafad 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -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. @@ -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 diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb index 2a915d470..791647716 100644 --- a/config/initializers/filter_parameter_logging.rb +++ b/config/initializers/filter_parameter_logging.rb @@ -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] diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index 88ee05b20..007c05efc 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -1311,6 +1311,42 @@ en: email_confirmed: "Email %{email} activated" email_not_confirmed: "Email could not be activated. Wrong link?" + two_factor_auth: + title: "Two-factor authentication" + explanation: "Two-factor authentication is a powerful way to ensure you are the only one able to sign in to your account. When signing in, you will enter a 6-digit code along with your password to prove your identity. Be careful though: if you lose your phone and the recovery codes created when you activate this feature, access to your diaspora* account will be blocked forever." + activated: + status: "Two-factor authentication activated" + change_label: "Deactivate two-factor authentication by entering a TOTP token." + change_button: "Deactivate" + deactivated: + status: "Two-factor authentication not activated" + change_label: "Activate two-factor authentication" + change_button: "Activate" + confirm: + title: "Confirm activation" + status: "Two-factor authentication is not fully activated yet, you need to confirm activation with a TOTP token" + scan_title: "Scan the QR code" + scan_explanation: "Please scan the QR code with a TOTP capable app, such as andOTP (Android), FreeOTP (iOS), SailOTP (SailfishOS)." + manual_explanation: "In case you can’t scan the QR code automatically you can manually enter the secret in your app." + manual_explanation_cont: "We are using time-based one-time passwords (TOTP) with six-digit tokens. In case your app prompts you for a time interval and algorithm enter 30 seconds and sha1 respectively.
The spaces are just for readability, please enter the code without them." + input_title: "Confim with TOTP token" + input_explanation: "After scanning or entering the secret, enter the six-digit code you see and confirm the setup." + activate_button: "Confirm and activate" + input_token: + label: "Two-factor token" + placeholder: "six-digit two-factor token" + recovery: + title: "Recovery codes" + reminder: "Alternatively, you can use one of the recovery codes." + explanation: "If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe. For example, you may print them and store them with other important documents." + explanation_short: "Recovery codes allow you to regain access to your account if you lose your phone. Note that you can use each recovery code only once." + invalidation_notice: "If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated." + button: "Generate new recovery codes" + flash: + success_activation: "Successfully activated two-factor authentication" + success_deactivation: "Successfully deactivated two-factor authentication" + error_token: "Token was incorrect or invalid" + will_paginate: previous_label: "« previous" next_label: "next »" diff --git a/config/routes.rb b/config/routes.rb index 7f1e36102..4115bf5ba 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -119,6 +119,12 @@ Rails.application.routes.draw do get "getting_started_completed" => :getting_started_completed end + resource :two_factor_authentication, only: %i[show create destroy] do + get :confirm, action: :confirm_2fa + post :confirm, action: :confirm_and_activate_2fa + get :recovery_codes + end + devise_for :users, controllers: {sessions: :sessions}, skip: :registration devise_scope :user do get "/users/sign_up" => "registrations#new", :as => :new_user_registration diff --git a/db/migrate/20171229175654_add_devise_two_factor_to_users.rb b/db/migrate/20171229175654_add_devise_two_factor_to_users.rb new file mode 100644 index 000000000..f66a4e77e --- /dev/null +++ b/db/migrate/20171229175654_add_devise_two_factor_to_users.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.1] + def change + add_column :users, :encrypted_otp_secret, :string + add_column :users, :encrypted_otp_secret_iv, :string + add_column :users, :encrypted_otp_secret_salt, :string + add_column :users, :consumed_timestep, :integer + add_column :users, :otp_required_for_login, :boolean + end +end diff --git a/db/migrate/20180302105225_add_two_factor_backupable_to_user.rb b/db/migrate/20180302105225_add_two_factor_backupable_to_user.rb new file mode 100644 index 000000000..f9b6c0b5e --- /dev/null +++ b/db/migrate/20180302105225_add_two_factor_backupable_to_user.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddTwoFactorBackupableToUser < ActiveRecord::Migration[5.1] + def change + add_column :users, :otp_backup_codes, :text + end +end diff --git a/features/desktop/change_password.feature b/features/desktop/change_password.feature index f37ebe045..7b30014ec 100644 --- a/features/desktop/change_password.feature +++ b/features/desktop/change_password.feature @@ -29,8 +29,7 @@ Feature: Change password When I follow the "Change my password" link from the last sent email When I fill out the password reset form with "supersecret" and "supersecret" And I submit the password reset form - Then I should be on the stream page - And I sign out manually + Then I should be on the new user session page And I sign in manually as "georges_abitbol" with password "supersecret" Then I should be on the stream page diff --git a/features/desktop/two_factor_authentication.feature b/features/desktop/two_factor_authentication.feature new file mode 100644 index 000000000..ae8e2d2ef --- /dev/null +++ b/features/desktop/two_factor_authentication.feature @@ -0,0 +1,90 @@ +# frozen_string_literal: true +@javascript +Feature: Two-factor autentication + + Scenario: Activate 2fa + Given a user with email "alice@test.com" + When I sign in as "alice@test.com" + When I go to the two-factor authentication page + And I press "Activate" + Then I should see "Confirm activation" + When I scan the QR code and fill in a valid TOTP token for "alice@test.com" + And I press "Confirm and activate" + Then I should see "Two-factor authentication activated" + And I should see "Recovery codes" + When I confirm activation + Then I should see "Two-factor authentication activated" + And I should see "Deactivate" + + Scenario: Signing in with 2fa activated and correct token + Given a user with username "alice" and password "secret" + And 2fa is activated for "alice" + When I go to the login page + And I fill in username "alice" and password "secret" + And press "Sign in" + Then I should see "Two-factor authentication" + When I fill in a valid TOTP token for "alice" + And I press "Sign in" + Then I should be on the stream page + + Scenario: Trying to sign in with 2fa activated and incorrect token + Given a user with username "alice" and password "secret" + And 2fa is activated for "alice" + When I go to the login page + And I fill in username "alice" and password "secret" + And press "Sign in" + Then I should see "Two-factor authentication" + When I fill in an invalid TOTP token + And I press "Sign in" + Then I should see "Two-factor authentication" + + Scenario: Signing in with 2fa activated and a recovery code + Given a user with username "alice" and password "secret" + And 2fa is activated for "alice" + When I go to the login page + And I fill in username "alice" and password "secret" + And press "Sign in" + Then I should see "Two-factor authentication" + When I fill in a recovery code from "alice" + And I press "Sign in" + Then I should be on the stream page + + Scenario: Regenerating recovery codes + Given a user with email "alice@test.com" + When I sign in as "alice@test.com" + And 2fa is activated for "alice@test.com" + When I go to the two-factor authentication page + Then I should see "Generate new recovery codes" + When I press the recovery code generate button + Then I should see a list of recovery codes + + Scenario: Deactivating 2fa with correct token + Given a user with email "alice@test.com" + When I sign in as "alice@test.com" + And 2fa is activated for "alice@test.com" + When I go to the two-factor authentication page + Then I should see "Deactivate" + When I fill in a valid TOTP token to deactivate for "alice@test.com" + And I press "Deactivate" + Then I should see "Two-factor authentication not activated" + + Scenario: Deactivating 2fa with recovery token + Given a user with email "alice@test.com" + When I sign in as "alice@test.com" + And 2fa is activated for "alice@test.com" + When I go to the two-factor authentication page + Then I should see "Deactivate" + When I fill in a recovery code to deactivate from "alice@test.com" + And I press "Deactivate" + Then I should see "Two-factor authentication not activated" + + Scenario: Trying to deactivate with incorrect token + Given a user with email "alice@test.com" + When I sign in as "alice@test.com" + And 2fa is activated for "alice@test.com" + When I go to the two-factor authentication page + Then I should see "Deactivate" + When I fill in an invalid TOTP token to deactivate + And I press "Deactivate" + Then I should see "Two-factor authentication activated" + And I should see "Deactivate" diff --git a/features/mobile/change_password.feature b/features/mobile/change_password.feature index f30edb215..f3bcdb445 100644 --- a/features/mobile/change_password.feature +++ b/features/mobile/change_password.feature @@ -31,9 +31,8 @@ Feature: Change password When I follow the "Change my password" link from the last sent email And I fill out the password reset form with "supersecret" and "supersecret" And I submit the password reset form - Then I should be on the stream page - When I sign out - And I go to the login page + Then I should be on the new user session page + When I go to the login page And I sign in manually as "georges_abitbol" with password "supersecret" on the mobile website Then I should be on the stream page diff --git a/features/step_definitions/two_factor_steps.rb b/features/step_definitions/two_factor_steps.rb new file mode 100644 index 000000000..7b5ab2319 --- /dev/null +++ b/features/step_definitions/two_factor_steps.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +When /^I scan the QR code and fill in a valid TOTP token for "([^"]*)"$/ do |email| + @me = find_user email + fill_in "user_code", with: @me.current_otp +end + +When /^I fill in a valid TOTP token for "([^"]*)"$/ do |username| + @me = find_user username + fill_in "user_otp_attempt", with: @me.current_otp +end + +When /^I fill in an invalid TOTP token$/ do + fill_in "user_otp_attempt", with: "c0ffee" +end + +When /^I fill in a valid TOTP token to deactivate for "([^"]*)"$/ do |username| + @me = find_user username + fill_in "two_factor_authentication_code", with: @me.current_otp +end + +When /^I fill in an invalid TOTP token to deactivate$/ do + fill_in "two_factor_authentication_code", with: "c0ffee" +end + +When /^I fill in a recovery code from "([^"]*)"$/ do |username| + @me = find_user username + @codes = @me.generate_otp_backup_codes! + @me.save! + fill_in "user_otp_attempt", with: @codes.first +end + +When /^I fill in a recovery code to deactivate from "([^"]*)"$/ do |username| + @me = find_user username + @codes = @me.generate_otp_backup_codes! + @me.save! + fill_in "two_factor_authentication_code", with: @codes.first +end + +When /^I confirm activation$/ do + find(".btn-primary", match: :first).click +end + +When /^2fa is activated for "([^"]*)"$/ do |username| + @me = find_user username + @me.otp_secret = User.generate_otp_secret(32) + @me.otp_required_for_login = true + @me.save! +end + +When /^I fill in username "([^"]*)" and password "([^"]*)"$/ do |username, password| + fill_in "user_username", with: username + fill_in "user_password", with: password +end + +Then /^I should see a list of recovery codes$/ do + find(".recovery-codes", match: :first) + find(".recovery-codes li samp", match: :first) +end + +When /^I press the recovery code generate button$/ do + find(".btn-default", match: :first).click +end + +def find_user(username) + User.find_by(username: username) || User.find_by(email: username) +end diff --git a/features/support/paths.rb b/features/support/paths.rb index a486ef245..7962fe17d 100644 --- a/features/support/paths.rb +++ b/features/support/paths.rb @@ -40,6 +40,8 @@ module NavigationHelpers edit_user_path when /^forgot password page$/ new_user_password_path + when /^the two-factor authentication page$/ + two_factor_authentication_path when %r{^"(/.*)"} Regexp.last_match(1) else diff --git a/lib/configuration_methods.rb b/lib/configuration_methods.rb index 511e8e2d2..487b70672 100644 --- a/lib/configuration_methods.rb +++ b/lib/configuration_methods.rb @@ -52,25 +52,43 @@ module Configuration def secret_token if heroku? - return ENV['SECRET_TOKEN'] if ENV['SECRET_TOKEN'] + return ENV["SECRET_TOKEN"] if ENV["SECRET_TOKEN"] + warn "FATAL: Running on Heroku with SECRET_TOKEN unset" warn " Run heroku config:add SECRET_TOKEN=#{SecureRandom.hex(40)}" - Process.exit(1) + abort else token_file = File.expand_path( - '../config/initializers/secret_token.rb', + "../config/initializers/secret_token.rb", File.dirname(__FILE__) ) - unless File.exist? token_file - `DISABLE_SPRING=1 bin/rake generate:secret_token` - end + system "DISABLE_SPRING=1 bin/rake generate:secret_token" unless File.exist? token_file require token_file Diaspora::Application.config.secret_key_base end end + def twofa_encryption_key + if heroku? + return ENV["TWOFA_ENCRYPTION_KEY"] if ENV["TWOFA_ENCRYPTION_KEY"] + + warn "FATAL: Running on Heroku with TWOFA_ENCRYPTION_KEY unset" + warn " Run heroku config:add TWOFA_ENCRYPTION_KEY=#{SecureRandom.hex(32)}" + abort + else + key_file = File.expand_path( + "../config/initializers/twofa_encryption_key.rb", + File.dirname(__FILE__) + ) + system "DISABLE_SPRING=1 bin/rake generate:twofa_key" unless File.exist? key_file + require key_file + Diaspora::Application.config.twofa_encryption_key + end + end + def version_string return @version_string unless @version_string.nil? + @version_string = version.number.to_s @version_string = "#{@version_string}-p#{git_revision[0..7]}" if git_available? @version_string diff --git a/lib/tasks/generate_2fa_encription_key.rake b/lib/tasks/generate_2fa_encription_key.rake new file mode 100644 index 000000000..53572f51f --- /dev/null +++ b/lib/tasks/generate_2fa_encription_key.rake @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +namespace :generate do + desc "Generates a key for encrypting 2fa tokens" + task :twofa_key do + path = Rails.root.join("config", "initializers", "twofa_encryption_key.rb") + key = SecureRandom.hex(32) + File.open(path, "w") do |f| + f.write <<~CONF + # frozen_string_literal: true + + # The 2fa encryption key is used to encrypt users' OTP tokens in the database. + + # You can regenerate this key by running `rake generate:twofa_key` + + # If you change this key after a user has set up 2fa + # the users' tokens cannot be recovered + # and they will not be able to log in again! + + Diaspora::Application.config.twofa_encryption_key = "#{key}" + CONF + end + end +end diff --git a/spec/controllers/two_factor_authentications_controller_spec.rb b/spec/controllers/two_factor_authentications_controller_spec.rb new file mode 100644 index 000000000..585061385 --- /dev/null +++ b/spec/controllers/two_factor_authentications_controller_spec.rb @@ -0,0 +1,120 @@ +# frozen_string_literal: true + +describe TwoFactorAuthenticationsController, type: :controller do + before do + @user = FactoryGirl.create :user + sign_in @user + end + + describe "#show" do + it "shows the deactivated state of 2fa" do + get :show + expect(response.body).to match I18n.t("two_factor_auth.title") + expect(response.body).to match I18n.t("two_factor_auth.deactivated.status") + expect(@user).to have_attributes(otp_required_for_login: nil) + end + + it "shows the activated state of 2fa" do + activate_2fa + get :show + expect(response.body).to match I18n.t("two_factor_auth.title") + expect(response.body).to match I18n.t("two_factor_auth.activated.status") + expect(response.body).to match I18n.t("two_factor_auth.input_token.label") + expect(response.body).to match I18n.t("two_factor_auth.recovery.button") + expect(@user).to have_attributes(otp_required_for_login: true) + end + end + + describe "#create" do + it "sets the otp_secret flag" do + post :create, params: {user: {otp_required_for_login: "true"}} + expect(response).to be_redirect + expect(response.location).to match confirm_two_factor_authentication_path + end + end + + describe "#confirm_2fa" do + context "2fa is not yet activated" do + before do + create_otp_token + end + it "shows the QR verification code" do + get :confirm_2fa + expect(response.body).to match I18n.t("two_factor_auth.confirm.title") + expect(response.body).to include("svg") + expect(response.body).to match(/#{@user.otp_secret.scan(/.{4}/).join(" ")}/) + expect(response.body).to match I18n.t("two_factor_auth.input_token.label") + end + end + context "2fa is already activated" do + before do + activate_2fa + end + + it "redirects back" do + get :confirm_2fa + expect(response).to be_redirect + expect(response.location).to match two_factor_authentication_path + end + end + end + + describe "#confirm_and_activate_2fa" do + before do + create_otp_token + end + it "redirects back to confirm when token was wrong" do + post :confirm_and_activate_2fa, params: {user: {code: "not valid token"}} + expect(response.location).to match confirm_two_factor_authentication_path + expect(flash[:alert]).to match I18n.t("two_factor_auth.flash.error_token") + end + it "redirects to #recovery_codes when token was correct" do + post :confirm_and_activate_2fa, params: {user: {code: @user.current_otp}} + expect(response.location).to match recovery_codes_two_factor_authentication_path + expect(flash[:notice]).to match I18n.t("two_factor_auth.flash.success_activation") + end + end + + describe "#recovery_codes" do + before do + activate_2fa + end + it "shows recovery codes page" do + get :recovery_codes + expect(response.body).to match I18n.t("two_factor_auth.recovery.title") + expect(@user).to have_attributes(otp_required_for_login: true) + end + end + + describe "#destroy" do + before do + activate_2fa + end + it "deactivates 2fa if token is correct" do + delete :destroy, params: {two_factor_authentication: {code: @user.current_otp}} + expect(response).to be_redirect + expect(flash[:notice]).to match I18n.t("two_factor_auth.flash.success_deactivation") + end + + it "does nothing if token is wrong" do + delete :destroy, params: {two_factor_authentication: {code: "a wrong code"}} + expect(response).to be_redirect + expect(flash[:alert]).to match I18n.t("two_factor_auth.flash.error_token") + end + end + + def create_otp_token + @user.otp_secret = User.generate_otp_secret(32) + @user.save! + end + + def confirm_activation + @user.otp_required_for_login = true + @user.save! + end + + def activate_2fa + create_otp_token + confirm_activation + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index d264493a8..13aa6fae8 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -983,6 +983,13 @@ describe User, :type => :model do post_default_public exported_at exported_photos_at + consumed_timestep + encrypted_otp_secret + encrypted_otp_secret_iv + encrypted_otp_secret_salt + otp_backup_codes + otp_required_for_login + otp_secret ) ) end -- cgit v1.2.3 From 607659939d1113c2840e7b36eced7d6f0c6c637f Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 28 Apr 2019 18:38:46 +0200 Subject: Enable paranoid mode for devise fixes #8001 closes #8003 --- Changelog.md | 1 + app/views/devise/passwords/new.haml | 4 ---- config/initializers/devise.rb | 2 +- config/locales/devise/devise.en.yml | 1 - features/desktop/change_password.feature | 4 ++-- features/mobile/change_password.feature | 4 ++-- spec/controllers/passwords_controller_spec.rb | 2 +- 7 files changed, 7 insertions(+), 11 deletions(-) diff --git a/Changelog.md b/Changelog.md index 3f44db66b..e4ab25b92 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,7 @@ # 0.7.11.0 ## Refactor +* Enable paranoid mode for devise [#8003](https://github.com/diaspora/diaspora/pull/8003) ## Bug fixes diff --git a/app/views/devise/passwords/new.haml b/app/views/devise/passwords/new.haml index 9a5683b63..c62fe9aaa 100644 --- a/app/views/devise/passwords/new.haml +++ b/app/views/devise/passwords/new.haml @@ -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| - - unless resource.errors.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") diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 38a1eafad..327cef80e 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -97,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. diff --git a/config/locales/devise/devise.en.yml b/config/locales/devise/devise.en.yml index 45f35a238..47f78cf2d 100644 --- a/config/locales/devise/devise.en.yml +++ b/config/locales/devise/devise.en.yml @@ -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 diff --git a/features/desktop/change_password.feature b/features/desktop/change_password.feature index 7b30014ec..695193249 100644 --- a/features/desktop/change_password.feature +++ b/features/desktop/change_password.feature @@ -25,7 +25,7 @@ Feature: Change password Given I am on forgot password page When I fill out forgot password form with "forgetful@users.net" And I submit forgot password form - Then I should see "You will receive an email with instructions" + Then I should see "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." When I follow the "Change my password" link from the last sent email When I fill out the password reset form with "supersecret" and "supersecret" And I submit the password reset form @@ -49,4 +49,4 @@ Feature: Change password Given I am on forgot password page When I fill out forgot password form with "notanemail" And I submit forgot password form - Then I should see "No account with this email exists" + Then I should see "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." diff --git a/features/mobile/change_password.feature b/features/mobile/change_password.feature index f3bcdb445..8f7c0c060 100644 --- a/features/mobile/change_password.feature +++ b/features/mobile/change_password.feature @@ -27,7 +27,7 @@ Feature: Change password And I am on forgot password page When I fill out forgot password form with "forgetful@users.net" And I submit forgot password form - Then I should see "You will receive an email with instructions" + Then I should see "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." When I follow the "Change my password" link from the last sent email And I fill out the password reset form with "supersecret" and "supersecret" And I submit the password reset form @@ -52,4 +52,4 @@ Feature: Change password Given I am on forgot password page When I fill out forgot password form with "notanemail" And I submit forgot password form - Then I should see "No account with this email exists" + Then I should see "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." diff --git a/spec/controllers/passwords_controller_spec.rb b/spec/controllers/passwords_controller_spec.rb index 870907904..289fcd975 100644 --- a/spec/controllers/passwords_controller_spec.rb +++ b/spec/controllers/passwords_controller_spec.rb @@ -13,7 +13,7 @@ describe Devise::PasswordsController, type: :controller do context "when there is no such user" do it "succeeds" do post :create, params: {user: {email: "foo@example.com"}} - expect(response).to be_success + expect(response).to redirect_to(new_user_session_path) end it "doesn't send email" do -- cgit v1.2.3 From ef137f09f2717b61970555c87c414aa367d9a1c4 Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Mon, 29 Apr 2019 23:32:41 +0200 Subject: Add lock icon to the 2fa OTP field --- app/views/sessions/two_factor.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/sessions/two_factor.html.haml b/app/views/sessions/two_factor.html.haml index 8e40dc411..f7fd7f592 100644 --- a/app/views/sessions/two_factor.html.haml +++ b/app/views/sessions/two_factor.html.haml @@ -15,7 +15,7 @@ %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"), -- cgit v1.2.3 From 3c06bb2f4c1b2c8135a6f83359301ac0e117b93e Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Mon, 29 Apr 2019 23:34:59 +0200 Subject: Center

s inside formes used as secondary labels closes #8004 --- app/assets/stylesheets/forms.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/assets/stylesheets/forms.scss b/app/assets/stylesheets/forms.scss index 2f0717bba..27be8a013 100644 --- a/app/assets/stylesheets/forms.scss +++ b/app/assets/stylesheets/forms.scss @@ -93,5 +93,10 @@ textarea { } ::placeholder { text-transform: uppercase; } + + p { + margin-top: .5rem; + text-align: center; + } } } -- cgit v1.2.3 From ecda6eccf6b87a499960b8caf9d869b961132637 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Tue, 30 Apr 2019 00:45:44 +0200 Subject: Remove password reset and sign up link below two factor form They don't make sense on that page, because at this stage, the user already has an account and also has already entered their password. closes #8005 --- app/views/sessions/two_factor.html.haml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/views/sessions/two_factor.html.haml b/app/views/sessions/two_factor.html.haml index f7fd7f592..76c29bbd4 100644 --- a/app/views/sessions/two_factor.html.haml +++ b/app/views/sessions/two_factor.html.haml @@ -29,11 +29,3 @@ = f.button t("devise.sessions.new.sign_in"), type: :submit, class: "btn btn-large btn-block btn-primary" - - .text-center - - if display_password_reset_link? - = link_to t("devise.shared.links.forgot_your_password"), - new_password_path(resource_name), id: "forgot_password_link" - %br - - if display_registration_link? - = link_to t("devise.shared.links.sign_up"), new_registration_path(resource_name) -- cgit v1.2.3 From 54fd4846c0607ea1a3de07f65e9a39920cf4ba8a Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Tue, 30 Apr 2019 02:36:23 +0200 Subject: Use password to disable 2FA instead of a token Using token doesn't make much sense when you can generate new tokens right below. closes #8006 --- .../two_factor_authentications_controller.rb | 9 ++------- .../two_factor_authentications/_deactivate.haml | 5 ++--- config/locales/diaspora/en.yml | 2 +- features/desktop/two_factor_authentication.feature | 22 ++++++---------------- features/step_definitions/session_steps.rb | 2 +- features/step_definitions/two_factor_steps.rb | 16 ---------------- .../two_factor_authentications_controller_spec.rb | 11 +++++------ 7 files changed, 17 insertions(+), 50 deletions(-) diff --git a/app/controllers/two_factor_authentications_controller.rb b/app/controllers/two_factor_authentications_controller.rb index e5350b38e..8dafbf3c4 100644 --- a/app/controllers/two_factor_authentications_controller.rb +++ b/app/controllers/two_factor_authentications_controller.rb @@ -37,12 +37,12 @@ class TwoFactorAuthenticationsController < ApplicationController end def destroy - if acceptable_code? + 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.now[:alert] = t("two_factor_auth.flash.error_token") + flash[:alert] = t("users.destroy.wrong_password") end redirect_to two_factor_authentication_path end @@ -52,9 +52,4 @@ class TwoFactorAuthenticationsController < ApplicationController def verify_otp_required redirect_to two_factor_authentication_path if current_user.otp_required_for_login? end - - def acceptable_code? - current_user.validate_and_consume_otp!(params[:two_factor_authentication][:code]) || - current_user.invalidate_otp_backup_code!(params[:two_factor_authentication][:code]) - end end diff --git a/app/views/two_factor_authentications/_deactivate.haml b/app/views/two_factor_authentications/_deactivate.haml index c982265de..501f2cb2c 100644 --- a/app/views/two_factor_authentications/_deactivate.haml +++ b/app/views/two_factor_authentications/_deactivate.haml @@ -13,10 +13,9 @@ = form_for "two_factor_authentication", url: two_factor_authentication_path, html: {method: :delete, class: "form-horizontal"} do |f| .form-group - = f.label :code, t("two_factor_auth.input_token.label"), class: "control-label col-sm-6" + = f.label :password, t("users.edit.current_password"), class: "control-label col-sm-6" .col-sm-6 - = f.text_field :code, placeholder: t("two_factor_auth.input_token.placeholder"), class: "form-control" - = t("two_factor_auth.recovery.reminder") + = f.password_field :password, class: "form-control" .clearfix= f.submit t("two_factor_auth.activated.change_button"), class: "btn btn-primary pull-right" %hr diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index 007c05efc..6e8a8a096 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -1316,7 +1316,7 @@ en: explanation: "Two-factor authentication is a powerful way to ensure you are the only one able to sign in to your account. When signing in, you will enter a 6-digit code along with your password to prove your identity. Be careful though: if you lose your phone and the recovery codes created when you activate this feature, access to your diaspora* account will be blocked forever." activated: status: "Two-factor authentication activated" - change_label: "Deactivate two-factor authentication by entering a TOTP token." + change_label: "Deactivate two-factor authentication by entering your password" change_button: "Deactivate" deactivated: status: "Two-factor authentication not activated" diff --git a/features/desktop/two_factor_authentication.feature b/features/desktop/two_factor_authentication.feature index ae8e2d2ef..1e2e8a61f 100644 --- a/features/desktop/two_factor_authentication.feature +++ b/features/desktop/two_factor_authentication.feature @@ -51,40 +51,30 @@ Feature: Two-factor autentication Scenario: Regenerating recovery codes Given a user with email "alice@test.com" - When I sign in as "alice@test.com" And 2fa is activated for "alice@test.com" + When I sign in as "alice@test.com" When I go to the two-factor authentication page Then I should see "Generate new recovery codes" When I press the recovery code generate button Then I should see a list of recovery codes - Scenario: Deactivating 2fa with correct token + Scenario: Deactivating 2fa with correct password Given a user with email "alice@test.com" - When I sign in as "alice@test.com" And 2fa is activated for "alice@test.com" - When I go to the two-factor authentication page - Then I should see "Deactivate" - When I fill in a valid TOTP token to deactivate for "alice@test.com" - And I press "Deactivate" - Then I should see "Two-factor authentication not activated" - - Scenario: Deactivating 2fa with recovery token - Given a user with email "alice@test.com" When I sign in as "alice@test.com" - And 2fa is activated for "alice@test.com" When I go to the two-factor authentication page Then I should see "Deactivate" - When I fill in a recovery code to deactivate from "alice@test.com" + When I put in my password in "two_factor_authentication_password" And I press "Deactivate" Then I should see "Two-factor authentication not activated" - Scenario: Trying to deactivate with incorrect token + Scenario: Trying to deactivate with incorrect password Given a user with email "alice@test.com" - When I sign in as "alice@test.com" And 2fa is activated for "alice@test.com" + When I sign in as "alice@test.com" When I go to the two-factor authentication page Then I should see "Deactivate" - When I fill in an invalid TOTP token to deactivate + When I fill in "two_factor_authentication_password" with "incorrect" And I press "Deactivate" Then I should see "Two-factor authentication activated" And I should see "Deactivate" diff --git a/features/step_definitions/session_steps.rb b/features/step_definitions/session_steps.rb index a31de421f..4b08d1498 100644 --- a/features/step_definitions/session_steps.rb +++ b/features/step_definitions/session_steps.rb @@ -31,7 +31,7 @@ When /^I (?:sign|log) in with password "([^"]*)"( on the mobile website)?$/ do | end When /^I put in my password in "([^"]*)"$/ do |field| - step %(I fill in "#{field}" with "#{@me.password}") + step %(I fill in "#{field}" with "#{@me.password}") end When /^I fill out change password section with my password and "([^"]*)" and "([^"]*)"$/ do |new_pass, confirm_pass| diff --git a/features/step_definitions/two_factor_steps.rb b/features/step_definitions/two_factor_steps.rb index 7b5ab2319..40e3cd7de 100644 --- a/features/step_definitions/two_factor_steps.rb +++ b/features/step_definitions/two_factor_steps.rb @@ -14,15 +14,6 @@ When /^I fill in an invalid TOTP token$/ do fill_in "user_otp_attempt", with: "c0ffee" end -When /^I fill in a valid TOTP token to deactivate for "([^"]*)"$/ do |username| - @me = find_user username - fill_in "two_factor_authentication_code", with: @me.current_otp -end - -When /^I fill in an invalid TOTP token to deactivate$/ do - fill_in "two_factor_authentication_code", with: "c0ffee" -end - When /^I fill in a recovery code from "([^"]*)"$/ do |username| @me = find_user username @codes = @me.generate_otp_backup_codes! @@ -30,13 +21,6 @@ When /^I fill in a recovery code from "([^"]*)"$/ do |username| fill_in "user_otp_attempt", with: @codes.first end -When /^I fill in a recovery code to deactivate from "([^"]*)"$/ do |username| - @me = find_user username - @codes = @me.generate_otp_backup_codes! - @me.save! - fill_in "two_factor_authentication_code", with: @codes.first -end - When /^I confirm activation$/ do find(".btn-primary", match: :first).click end diff --git a/spec/controllers/two_factor_authentications_controller_spec.rb b/spec/controllers/two_factor_authentications_controller_spec.rb index 585061385..e17a6e3ca 100644 --- a/spec/controllers/two_factor_authentications_controller_spec.rb +++ b/spec/controllers/two_factor_authentications_controller_spec.rb @@ -19,7 +19,6 @@ describe TwoFactorAuthenticationsController, type: :controller do get :show expect(response.body).to match I18n.t("two_factor_auth.title") expect(response.body).to match I18n.t("two_factor_auth.activated.status") - expect(response.body).to match I18n.t("two_factor_auth.input_token.label") expect(response.body).to match I18n.t("two_factor_auth.recovery.button") expect(@user).to have_attributes(otp_required_for_login: true) end @@ -90,16 +89,16 @@ describe TwoFactorAuthenticationsController, type: :controller do before do activate_2fa end - it "deactivates 2fa if token is correct" do - delete :destroy, params: {two_factor_authentication: {code: @user.current_otp}} + it "deactivates 2fa if password is correct" do + delete :destroy, params: {two_factor_authentication: {password: @user.password}} expect(response).to be_redirect expect(flash[:notice]).to match I18n.t("two_factor_auth.flash.success_deactivation") end - it "does nothing if token is wrong" do - delete :destroy, params: {two_factor_authentication: {code: "a wrong code"}} + it "does nothing if password is wrong" do + delete :destroy, params: {two_factor_authentication: {password: "a wrong password"}} expect(response).to be_redirect - expect(flash[:alert]).to match I18n.t("two_factor_auth.flash.error_token") + expect(flash[:alert]).to match I18n.t("users.destroy.wrong_password") end end -- cgit v1.2.3 From caf822f497f0f4018f0f56e3256655b4e5cec286 Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Wed, 1 May 2019 00:14:47 +0200 Subject: Make sure 2fa settings have the right background color closes #8008 --- app/assets/stylesheets/base.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/base.scss b/app/assets/stylesheets/base.scss index 3de954947..a4c3a5d96 100644 --- a/app/assets/stylesheets/base.scss +++ b/app/assets/stylesheets/base.scss @@ -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, -- cgit v1.2.3 From 554faa41164d67dfc3864b6e4cdda6f55a337e18 Mon Sep 17 00:00:00 2001 From: flaburgan Date: Sun, 28 Apr 2019 13:03:14 +0200 Subject: Reorganize steps a bit --- features/step_definitions/custom_web_steps.rb | 80 +------------------------- features/step_definitions/left_navbar_steps.rb | 23 ++++++++ features/step_definitions/posts_steps.rb | 72 ++--------------------- features/step_definitions/publisher_steps.rb | 74 ++++++++++++++++++++++++ features/step_definitions/stream_steps.rb | 55 +++++++++++++++--- 5 files changed, 152 insertions(+), 152 deletions(-) create mode 100644 features/step_definitions/left_navbar_steps.rb create mode 100644 features/step_definitions/publisher_steps.rb diff --git a/features/step_definitions/custom_web_steps.rb b/features/step_definitions/custom_web_steps.rb index 041afe439..15a84578b 100644 --- a/features/step_definitions/custom_web_steps.rb +++ b/features/step_definitions/custom_web_steps.rb @@ -61,18 +61,6 @@ And /^I submit the form$/ do find("input[type='submit']").click end -And /^I expand the publisher$/ do - click_publisher -end - -And /^I close the publisher$/ do - find("#publisher .md-cancel").click -end - -Then /^the publisher should be expanded$/ do - find("#publisher")["class"].should_not include("closed") -end - Then /^the text area wrapper mobile should be with attachments$/ do find("#publisher-textarea-wrapper")["class"].should include("with_attachments") end @@ -88,48 +76,6 @@ And /^I hover over the "([^"]+)"$/ do |element| find("#{element}", match: :first).hover end -When /^I prepare the deletion of the first post$/ do - find(".stream .stream-element", match: :first).hover - within(find(".stream .stream-element", match: :first)) do - ctrl = find(".control-icons") - ctrl.hover - ctrl.find(".remove_post").click - end -end - -When /^I prepare hiding the first post$/ do - find(".stream .stream-element", match: :first).hover - within(find(".stream .stream-element", match: :first)) do - ctrl = find(".control-icons") - ctrl.hover - ctrl.find(".hide_post").click - end -end - -When /^I click to delete the first post$/ do - accept_alert do - step "I prepare the deletion of the first post" - end - expect(find(".stream")).to have_no_css(".stream-element.loaded.deleting") -end - -When /^I click to hide the first post$/ do - accept_alert do - step "I prepare hiding the first post" - end -end - -When /^I click to delete the first comment$/ do - within("div.comment", match: :first) do - find(".comment_delete", visible: false).click - end -end - -When /^I click to delete the first uploaded photo$/ do - page.execute_script("$('#photodropzone .x').css('display', 'block');") - find("#photodropzone .x", match: :first).trigger "click" -end - And /^I click on selector "([^"]*)"$/ do |selector| find(selector).click end @@ -221,15 +167,7 @@ When /^I resize my window to 800x600$/ do page.driver.resize(800, 600) end -Then 'I should see an image attached to the post' do - step %(I should see a "img" within ".stream-element div.photo-attachments") -end - -Then 'I press the attached image' do - step %(I press the 1st "img" within ".stream-element div.photo-attachments") -end - -And "I wait for the popovers to appear" do +And /^I wait for the popovers to appear$/ do expect(page).to have_selector(".popover", count: 3) end @@ -282,22 +220,6 @@ When /^I focus the "([^"]+)" field$/ do |field| find_field(field).click end -Given /^I have configured a Bitcoin address$/ do - AppConfig.settings.bitcoin_address = "AAAAAA" -end - -Then /^I should see the Bitcoin address$/ do - find("#bitcoin_address")['value'].should == "AAAAAA" -end - -Given /^I have configured a Liberapay username$/ do - AppConfig.settings.liberapay_username = "BBBBBB" -end - -Then /^I should see the Liberapay donate button$/ do - find("#liberapay-button")["href"].should == "https://liberapay.com/BBBBBB/donate" -end - Given /^"([^"]*)" is hidden$/ do |selector| page.should have_selector(selector, visible: false) page.should_not have_selector(selector) diff --git a/features/step_definitions/left_navbar_steps.rb b/features/step_definitions/left_navbar_steps.rb new file mode 100644 index 000000000..4a88bebb1 --- /dev/null +++ b/features/step_definitions/left_navbar_steps.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +When /^(?:|I )click on "([^"]*)" navbar title$/ do |title| + with_scope(".info-bar") do + find("h5", text: title).click + end +end + +Given /^I have configured a Bitcoin address$/ do + AppConfig.settings.bitcoin_address = "AAAAAA" +end + +Then /^I should see the Bitcoin address$/ do + find("#bitcoin_address")['value'].should == "AAAAAA" +end + +Given /^I have configured a Liberapay username$/ do + AppConfig.settings.liberapay_username = "BBBBBB" +end + +Then /^I should see the Liberapay donate button$/ do + find("#liberapay-button")["href"].should == "https://liberapay.com/BBBBBB/donate" +end diff --git a/features/step_definitions/posts_steps.rb b/features/step_definitions/posts_steps.rb index 7f8c93466..da3ee2924 100644 --- a/features/step_definitions/posts_steps.rb +++ b/features/step_definitions/posts_steps.rb @@ -8,36 +8,6 @@ Then /^the post should be expanded$/ do first_post_expanded? end -Then /^I should see an uploaded image within the photo drop zone$/ do - expect(find("#photodropzone img")["src"]).to include("uploads/images") -end - -Then /^I should not see an uploaded image within the photo drop zone$/ do - page.should_not have_css "#photodropzone img" -end - -Then /^I should not see any posts in my stream$/ do - expect(page).not_to have_selector("#paginate .loader") - expect(page).not_to have_selector(".stream-element .media") - expect(page).to have_selector(".stream-element .no-posts-info") -end - -Then /^I should not see any picture in my stream$/ do - expect(page).to have_selector(".photo_area img", count: 0) -end - -Then /^I should see (\d+) pictures in my stream$/ do |count| - expect(page).to have_selector(".photo_area img", count: count) -end - -Then /^I should not be able to submit the publisher$/ do - expect(publisher_submittable?).to be false -end - -Then /^I should see "([^"]*)" in the publisher$/ do |text| - expect(page).to have_field("status_message[text]", with: text) -end - Given /^I have a limited post with text "([^\"]*)" in the aspect "([^"]*)"$/ do |text, aspect_name| @me.post :status_message, text: text, to: @me.aspects.where(name: aspect_name).first.id end @@ -83,10 +53,6 @@ And /^the post with text "([^"]*)" is reshared by "([^"]*)"$/ do |text, email| user.post(:reshare, :root_guid => root.guid, :public => true, :to => user.aspect_ids) end -And /^I submit the publisher$/ do - submit_publisher -end - When /^I click on the first block button/ do find(".stream-element", match: :first).hover find(".block_user").click @@ -100,40 +66,14 @@ When /^I expand the post$/ do expand_first_post end -When /^I click the publisher and post "([^"]*)"$/ do |text| - click_and_post(text) -end - -When /^I post an extremely long status message$/ do - click_and_post("I am a very interesting message " * 64) -end - -When /^I write the status message "([^"]*)"$/ do |text| - write_in_publisher(text) -end - -When /^I insert an extremely long status message$/ do - write_in_publisher("I am a very interesting message " * 64) -end - -When /^I append "([^"]*)" to the publisher$/ do |text| - append_to_publisher(text) -end - -When /^I attach "([^"]*)" to the publisher$/ do |path| - upload_file_with_publisher(path) -end - When /^I open the show page of the "([^"]*)" post$/ do |post_text| visit post_path_by_content(post_text) end -When /^I select "([^"]*)" on the aspect dropdown$/ do |text| - page.execute_script( - "$('#publisher .dropdown .dropdown_list, #publisher .aspect-dropdown .dropdown-menu') - .find('li').each(function(i,el){ - var elem = $(el); - if ('" + text + "' == $.trim(elem.text()) ) { - elem.click(); - }});") +Then /^I should see an image attached to the post$/ do + step %(I should see a "img" within ".stream-element div.photo-attachments") +end + +Then /^I press the attached image$/ do + step %(I press the 1st "img" within ".stream-element div.photo-attachments") end diff --git a/features/step_definitions/publisher_steps.rb b/features/step_definitions/publisher_steps.rb new file mode 100644 index 000000000..8479b1429 --- /dev/null +++ b/features/step_definitions/publisher_steps.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +Then /^I expand the publisher$/ do + click_publisher +end + +And /^I close the publisher$/ do + find("#publisher .md-cancel").click +end + +Then /^the publisher should be expanded$/ do + find("#publisher")["class"].should_not include("closed") +end + +When /^I click to delete the first uploaded photo$/ do + page.execute_script("$('#photodropzone .x').css('display', 'block');") + image_count = all(".publisher_photo img", wait: false).count + find("#photodropzone .x", match: :first).trigger "click" + page.assert_selector(".publisher_photo img", count: image_count - 1) +end + +Then /^I should see an uploaded image within the photo drop zone$/ do + expect(find("#photodropzone img")["src"]).to include("uploads/images") +end + +Then /^I should not see an uploaded image within the photo drop zone$/ do + page.should_not have_css "#photodropzone img" +end + +Then /^I should not be able to submit the publisher$/ do + expect(publisher_submittable?).to be false +end + +Then /^I should see "([^"]*)" in the publisher$/ do |text| + expect(page).to have_field("status_message[text]", with: text) +end + +When /^I write the status message "([^"]*)"$/ do |text| + write_in_publisher(text) +end + +When /^I insert an extremely long status message$/ do + write_in_publisher("I am a very interesting message " * 64) +end + +When /^I append "([^"]*)" to the publisher$/ do |text| + append_to_publisher(text) +end + +When /^I attach "([^"]*)" to the publisher$/ do |path| + upload_file_with_publisher(path) +end + +And /^I submit the publisher$/ do + submit_publisher +end + +When /^I click the publisher and post "([^"]*)"$/ do |text| + click_and_post(text) +end + +When /^I post an extremely long status message$/ do + click_and_post("I am a very interesting message " * 64) +end + +When /^I select "([^"]*)" on the aspect dropdown$/ do |text| + page.execute_script( + "$('#publisher .dropdown .dropdown_list, #publisher .aspect-dropdown .dropdown-menu') + .find('li').each(function(i,el){ + var elem = $(el); + if ('" + text + "' == $.trim(elem.text()) ) { + elem.click(); + }});") +end diff --git a/features/step_definitions/stream_steps.rb b/features/step_definitions/stream_steps.rb index 5d241eaa0..eacc1668e 100644 --- a/features/step_definitions/stream_steps.rb +++ b/features/step_definitions/stream_steps.rb @@ -4,10 +4,6 @@ When /^I (?:like|unlike) the post "([^"]*)" in the stream$/ do |post_text| like_stream_post(post_text) end -Then /^I should see an image in the publisher$/ do - photo_in_publisher.should be_present -end - Then /^"([^"]*)" should be post (\d+)$/ do |post_text, position| stream_element_numbers_content(position).should have_content(post_text) end @@ -24,8 +20,53 @@ Then /^I should have (\d+) nsfw posts$/ do |num_posts| page.should have_css(".nsfw-shield", count: num_posts.to_i) end -When /^(?:|I )click on "([^"]*)" navbar title$/ do |title| - with_scope(".info-bar") do - find("h5", text: title).click +When /^I prepare the deletion of the first post$/ do + find(".stream .stream-element", match: :first).hover + within(find(".stream .stream-element", match: :first)) do + ctrl = find(".control-icons") + ctrl.hover + ctrl.find(".remove_post").click + end +end + +When /^I prepare hiding the first post$/ do + find(".stream .stream-element", match: :first).hover + within(find(".stream .stream-element", match: :first)) do + ctrl = find(".control-icons") + ctrl.hover + ctrl.find(".hide_post").click + end +end + +When /^I click to delete the first post$/ do + accept_alert do + step "I prepare the deletion of the first post" + end + expect(find(".stream")).to have_no_css(".stream-element.loaded.deleting") +end + +When /^I click to hide the first post$/ do + accept_alert do + step "I prepare hiding the first post" end end + +When /^I click to delete the first comment$/ do + within("div.comment", match: :first) do + find(".comment_delete", visible: false).click + end +end + +Then /^I should not see any posts in my stream$/ do + expect(page).not_to have_selector("#paginate .loader") + expect(page).not_to have_selector(".stream-element .media") + expect(page).to have_selector(".stream-element .no-posts-info") +end + +Then /^I should not see any picture in my stream$/ do + expect(page).to have_selector(".photo_area img", count: 0) +end + +Then /^I should see (\d+) pictures in my stream$/ do |count| + expect(page).to have_selector(".photo_area img", count: count) +end -- cgit v1.2.3 From 83a9877def158b282a9afe0d424bc81329e2b1c5 Mon Sep 17 00:00:00 2001 From: flaburgan Date: Sun, 28 Apr 2019 15:02:28 +0200 Subject: Improve likes steps closes #8002 --- Changelog.md | 2 +- features/desktop/likes.feature | 13 +++++++----- features/step_definitions/left_navbar_steps.rb | 2 +- features/step_definitions/publisher_steps.rb | 3 ++- features/step_definitions/stream_steps.rb | 29 ++++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Changelog.md b/Changelog.md index e4ab25b92..e22291293 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,7 +2,7 @@ ## 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 ## Features diff --git a/features/desktop/likes.feature b/features/desktop/likes.feature index 73227004d..02bd395e8 100644 --- a/features/desktop/likes.feature +++ b/features/desktop/likes.feature @@ -16,13 +16,14 @@ Feature: Liking posts Scenario: Liking and unliking a post from the stream Then I should not have activated notifications for the post When I like the post "I like unicorns" in the stream - Then I should see "Unlike" within ".stream-element .feedback" - And I should see a ".likes .media" within "#main-stream .stream-element" + Then the post "I like unicorns" should have the "Unlike" action available + And the post "I like unicorns" should have 1 like + And the post "I like unicorns" should have a like from "Alice Smith" And I should have activated notifications for the post When I unlike the post "I like unicorns" in the stream - Then I should see "Like" within ".stream-element .feedback" - And I should not see a ".likes .media" within "#main-stream .stream-element" + Then the post "I like unicorns" should have the "Like" action available + And the post "I like unicorns" shouldn't have any likes Scenario: Liking and unliking a post from a single post page @@ -39,4 +40,6 @@ Feature: Liking posts When I like the post "I like unicorns" in the stream And I sign out And I sign in as "bob@bob.bob" - Then I should see a ".likes" within "#main-stream .stream-element" + Then the post "I like unicorns" should have the "Like" action available + And the post "I like unicorns" should have 1 like + And the post "I like unicorns" should have a like from "Alice Smith" diff --git a/features/step_definitions/left_navbar_steps.rb b/features/step_definitions/left_navbar_steps.rb index 4a88bebb1..f84f3526a 100644 --- a/features/step_definitions/left_navbar_steps.rb +++ b/features/step_definitions/left_navbar_steps.rb @@ -11,7 +11,7 @@ Given /^I have configured a Bitcoin address$/ do end Then /^I should see the Bitcoin address$/ do - find("#bitcoin_address")['value'].should == "AAAAAA" + find("#bitcoin_address")["value"].should == "AAAAAA" end Given /^I have configured a Liberapay username$/ do diff --git a/features/step_definitions/publisher_steps.rb b/features/step_definitions/publisher_steps.rb index 8479b1429..f0d6a8c46 100644 --- a/features/step_definitions/publisher_steps.rb +++ b/features/step_definitions/publisher_steps.rb @@ -70,5 +70,6 @@ When /^I select "([^"]*)" on the aspect dropdown$/ do |text| var elem = $(el); if ('" + text + "' == $.trim(elem.text()) ) { elem.click(); - }});") + }});" + ) end diff --git a/features/step_definitions/stream_steps.rb b/features/step_definitions/stream_steps.rb index eacc1668e..853df81ca 100644 --- a/features/step_definitions/stream_steps.rb +++ b/features/step_definitions/stream_steps.rb @@ -4,6 +4,35 @@ When /^I (?:like|unlike) the post "([^"]*)" in the stream$/ do |post_text| like_stream_post(post_text) end +Then /^the post "([^"]*)" should have the "([^"]*)" action available$/ do |post_text, action_text| + within_post(post_text) do + find(".feedback").should have_content(action_text) + end +end + +Then /^the post "([^"]*)" shouldn't have any likes$/ do |post_text| + within_post(post_text) do + find(".likes").should have_no_css(".avatar", visible: true) + end +end + +Then /^the post "([^"]*)" should have (\d+) like(?:s|)$/ do |post_text, likes_number| + within_post(post_text) do + find(".expand-likes").should have_content(likes_number) + end +end + +Then /^the post "([^"]*)" should have a like from "([^"]*)"$/ do |post_text, username| + within_post(post_text) do + find(".expand-likes").click + find(".likes .avatar")["data-original-title"].should have_content(username) + end +end + +Then /^I should see an image in the publisher$/ do + photo_in_publisher.should be_present +end + Then /^"([^"]*)" should be post (\d+)$/ do |post_text, position| stream_element_numbers_content(position).should have_content(post_text) end -- cgit v1.2.3 From 39b86ed486be7e9bc4b906988b54111aa0e5d971 Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Sun, 5 May 2019 04:21:37 +0200 Subject: Remvoe unused Changelog headline [ci skip] --- Changelog.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index e22291293..2dbd4123d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,7 +3,6 @@ ## 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 ## 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) -- cgit v1.2.3 From 2d23a2601e744719f0696db209275cd85fdbb140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Thu, 9 May 2019 16:37:55 +0200 Subject: fix old photos without a remote_photo_path or remote_photo_name closes #8012 --- Changelog.md | 3 +++ db/migrate/20190509125709_fix_missing_remote_photo_fields.rb | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 db/migrate/20190509125709_fix_missing_remote_photo_fields.rb diff --git a/Changelog.md b/Changelog.md index 2dbd4123d..90b3bff77 100644 --- a/Changelog.md +++ b/Changelog.md @@ -4,6 +4,9 @@ * 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) diff --git a/db/migrate/20190509125709_fix_missing_remote_photo_fields.rb b/db/migrate/20190509125709_fix_missing_remote_photo_fields.rb new file mode 100644 index 000000000..8d6462643 --- /dev/null +++ b/db/migrate/20190509125709_fix_missing_remote_photo_fields.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class FixMissingRemotePhotoFields < ActiveRecord::Migration[5.1] + def up + Photo.where(remote_photo_path: nil).each do |photo| + photo.write_attribute(:unprocessed_image, photo.read_attribute(:processed_image)) + photo.update_remote_path + photo.save! + end + end +end -- cgit v1.2.3 From 165b8f4f6e4e0a0c7a4577c1f3a9ffcb3d8a7a09 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 11 May 2019 19:06:42 +0200 Subject: Don't encrypt the OTP secret It doesn't add any security to have this encrypted, but it adds complexity for podmins, because they need to backup the key. closes #8014 --- .gitignore | 1 - app/models/user.rb | 3 +- ...0171229175654_add_devise_two_factor_to_users.rb | 12 ++--- .../20190511150503_decrypt_two_factor_secret.rb | 52 ++++++++++++++++++++++ lib/configuration_methods.rb | 18 -------- lib/tasks/generate_2fa_encription_key.rake | 24 ---------- spec/models/user_spec.rb | 4 +- 7 files changed, 61 insertions(+), 53 deletions(-) create mode 100644 db/migrate/20190511150503_decrypt_two_factor_secret.rb delete mode 100644 lib/tasks/generate_2fa_encription_key.rake diff --git a/.gitignore b/.gitignore index 48f5537ad..65d3c2649 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ app/assets/images/custom/ # Configuration files config/diaspora.yml config/initializers/secret_token.rb -config/initializers/twofa_encryption_key.rb .bundle vendor/bundle/ vendor/cache/ diff --git a/app/models/user.rb b/app/models/user.rb index 0f9336eca..8d30efa97 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -19,11 +19,10 @@ class User < ApplicationRecord scope :halfyear_actives, ->(time = Time.now) { logged_in_since(time - 6.month) } scope :active, -> { joins(:person).where(people: {closed_account: false}) } - attribute :otp_secret + attr_encrypted :otp_secret, if: false, prefix: "plain_" devise :two_factor_authenticatable, :two_factor_backupable, - otp_secret_encryption_key: AppConfig.twofa_encryption_key, otp_backup_code_length: 16, otp_number_of_backup_codes: 10 diff --git a/db/migrate/20171229175654_add_devise_two_factor_to_users.rb b/db/migrate/20171229175654_add_devise_two_factor_to_users.rb index f66a4e77e..47280dd20 100644 --- a/db/migrate/20171229175654_add_devise_two_factor_to_users.rb +++ b/db/migrate/20171229175654_add_devise_two_factor_to_users.rb @@ -2,10 +2,12 @@ class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.1] def change - add_column :users, :encrypted_otp_secret, :string - add_column :users, :encrypted_otp_secret_iv, :string - add_column :users, :encrypted_otp_secret_salt, :string - add_column :users, :consumed_timestep, :integer - add_column :users, :otp_required_for_login, :boolean + change_table :users, bulk: true do |t| + t.string :encrypted_otp_secret + t.string :encrypted_otp_secret_iv + t.string :encrypted_otp_secret_salt + t.integer :consumed_timestep + t.boolean :otp_required_for_login + end end end diff --git a/db/migrate/20190511150503_decrypt_two_factor_secret.rb b/db/migrate/20190511150503_decrypt_two_factor_secret.rb new file mode 100644 index 000000000..b1d21f5f6 --- /dev/null +++ b/db/migrate/20190511150503_decrypt_two_factor_secret.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class DecryptTwoFactorSecret < ActiveRecord::Migration[5.1] + class User < ApplicationRecord + end + + def up + add_column :users, :plain_otp_secret, :string + + key = twofa_encryption_key + decrypt_existing_secrets(key) if key + + change_table :users, bulk: true do |t| + t.remove :encrypted_otp_secret + t.remove :encrypted_otp_secret_iv + t.remove :encrypted_otp_secret_salt + end + end + + def down + raise ActiveRecord::IrreversibleMigration + end + + private + + def twofa_encryption_key + if AppConfig.heroku? + ENV["TWOFA_ENCRYPTION_KEY"] + else + key_file = File.expand_path("../../config/initializers/twofa_encryption_key.rb", File.dirname(__FILE__)) + + if File.exist? key_file + require key_file + File.delete(key_file) + + return Diaspora::Application.config.twofa_encryption_key + end + end + end + + def decrypt_existing_secrets(key) + User.where.not(encrypted_otp_secret: nil).each do |user| + user.plain_otp_secret = Encryptor.decrypt( + value: user.encrypted_otp_secret.unpack("m").first, + key: key, + iv: user.encrypted_otp_secret_iv.unpack("m").first, + salt: user.encrypted_otp_secret_salt.slice(1..-1).unpack("m").first + ) + user.save! + end + end +end diff --git a/lib/configuration_methods.rb b/lib/configuration_methods.rb index 487b70672..58a050f8c 100644 --- a/lib/configuration_methods.rb +++ b/lib/configuration_methods.rb @@ -68,24 +68,6 @@ module Configuration end end - def twofa_encryption_key - if heroku? - return ENV["TWOFA_ENCRYPTION_KEY"] if ENV["TWOFA_ENCRYPTION_KEY"] - - warn "FATAL: Running on Heroku with TWOFA_ENCRYPTION_KEY unset" - warn " Run heroku config:add TWOFA_ENCRYPTION_KEY=#{SecureRandom.hex(32)}" - abort - else - key_file = File.expand_path( - "../config/initializers/twofa_encryption_key.rb", - File.dirname(__FILE__) - ) - system "DISABLE_SPRING=1 bin/rake generate:twofa_key" unless File.exist? key_file - require key_file - Diaspora::Application.config.twofa_encryption_key - end - end - def version_string return @version_string unless @version_string.nil? diff --git a/lib/tasks/generate_2fa_encription_key.rake b/lib/tasks/generate_2fa_encription_key.rake deleted file mode 100644 index 53572f51f..000000000 --- a/lib/tasks/generate_2fa_encription_key.rake +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -namespace :generate do - desc "Generates a key for encrypting 2fa tokens" - task :twofa_key do - path = Rails.root.join("config", "initializers", "twofa_encryption_key.rb") - key = SecureRandom.hex(32) - File.open(path, "w") do |f| - f.write <<~CONF - # frozen_string_literal: true - - # The 2fa encryption key is used to encrypt users' OTP tokens in the database. - - # You can regenerate this key by running `rake generate:twofa_key` - - # If you change this key after a user has set up 2fa - # the users' tokens cannot be recovered - # and they will not be able to log in again! - - Diaspora::Application.config.twofa_encryption_key = "#{key}" - CONF - end - end -end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 13aa6fae8..560432927 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -984,9 +984,7 @@ describe User, :type => :model do exported_at exported_photos_at consumed_timestep - encrypted_otp_secret - encrypted_otp_secret_iv - encrypted_otp_secret_salt + plain_otp_secret otp_backup_codes otp_required_for_login otp_secret -- cgit v1.2.3 From 5aec9b966ca9e1b086922c2db0d06a44c8acd8a5 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 13 May 2019 22:49:16 +0200 Subject: updated 74 locale files [ci skip] --- config/locales/devise/devise.ar.yml | 1 - config/locales/devise/devise.art-nvi.yml | 1 - config/locales/devise/devise.bg.yml | 1 - config/locales/devise/devise.br.yml | 1 - config/locales/devise/devise.bs.yml | 1 - config/locales/devise/devise.cs.yml | 1 - config/locales/devise/devise.cy.yml | 1 - config/locales/devise/devise.da.yml | 1 - config/locales/devise/devise.de-moo.yml | 1 - config/locales/devise/devise.de.yml | 1 - config/locales/devise/devise.de_formal.yml | 1 - config/locales/devise/devise.el.yml | 1 - config/locales/devise/devise.en_1337.yml | 1 - config/locales/devise/devise.en_shaw.yml | 1 - config/locales/devise/devise.en_valspeak.yml | 1 - config/locales/devise/devise.eo.yml | 1 - config/locales/devise/devise.es-AR.yml | 1 - config/locales/devise/devise.es-CL.yml | 1 - config/locales/devise/devise.es-MX.yml | 1 - config/locales/devise/devise.es.yml | 1 - config/locales/devise/devise.et.yml | 1 - config/locales/devise/devise.eu.yml | 1 - config/locales/devise/devise.fi.yml | 1 - config/locales/devise/devise.fr.yml | 1 - config/locales/devise/devise.he.yml | 1 - config/locales/devise/devise.hu.yml | 1 - config/locales/devise/devise.hye-classical.yml | 1 - config/locales/devise/devise.hye.yml | 1 - config/locales/devise/devise.ia.yml | 1 - config/locales/devise/devise.id.yml | 1 - config/locales/devise/devise.is.yml | 1 - config/locales/devise/devise.it.yml | 1 - config/locales/devise/devise.ja.yml | 1 - config/locales/devise/devise.ka.yml | 1 - config/locales/devise/devise.ko.yml | 1 - config/locales/devise/devise.lt.yml | 1 - config/locales/devise/devise.mk.yml | 1 - config/locales/devise/devise.ms.yml | 1 - config/locales/devise/devise.nb.yml | 1 - config/locales/devise/devise.nds.yml | 1 - config/locales/devise/devise.nl.yml | 1 - config/locales/devise/devise.nn.yml | 1 - config/locales/devise/devise.oc.yml | 1 - config/locales/devise/devise.pa.yml | 1 - config/locales/devise/devise.pl.yml | 1 - config/locales/devise/devise.pt-BR.yml | 1 - config/locales/devise/devise.pt-PT.yml | 1 - config/locales/devise/devise.ro.yml | 1 - config/locales/devise/devise.ru.yml | 1 - config/locales/devise/devise.sc.yml | 1 - config/locales/devise/devise.sk.yml | 1 - config/locales/devise/devise.sl.yml | 1 - config/locales/devise/devise.sr.yml | 1 - config/locales/devise/devise.sv.yml | 1 - config/locales/devise/devise.te.yml | 1 - config/locales/devise/devise.tr.yml | 1 - config/locales/devise/devise.uk.yml | 1 - config/locales/devise/devise.vi.yml | 1 - config/locales/devise/devise.zh-CN.yml | 1 - config/locales/devise/devise.zh-TW.yml | 1 - config/locales/diaspora/bg.yml | 35 +++++++++++++++++++ config/locales/diaspora/da.yml | 48 +++++++++++++++++++++++--- config/locales/diaspora/de.yml | 2 ++ config/locales/diaspora/es-CL.yml | 14 ++++++++ config/locales/diaspora/fr.yml | 37 ++++++++++++++++++++ config/locales/diaspora/hu.yml | 4 ++- config/locales/diaspora/ia.yml | 29 +++++++++++++--- config/locales/diaspora/it.yml | 34 ++++++++++++++++++ config/locales/diaspora/ja.yml | 43 +++++++++++++++++++++++ config/locales/diaspora/pt-BR.yml | 35 +++++++++++++++++++ config/locales/diaspora/sv.yml | 36 +++++++++++++++++++ config/locales/javascript/javascript.da.yml | 1 + config/locales/javascript/javascript.de.yml | 1 + config/locales/javascript/javascript.ja.yml | 10 +++--- 74 files changed, 314 insertions(+), 75 deletions(-) diff --git a/config/locales/devise/devise.ar.yml b/config/locales/devise/devise.ar.yml index da3745647..fb2d0cdbf 100644 --- a/config/locales/devise/devise.ar.yml +++ b/config/locales/devise/devise.ar.yml @@ -54,7 +54,6 @@ ar: new: email: "البريد الإلكترونيّ" forgot_password: "أنسيت كلمة المرور؟" - no_account: "ليس هناك حساب بهذا البريد الإلكترونيّ" reset_password: "صفّر كلمة المرور" send_password_instructions: "أرسل لي إرشادات تصفير كلمة المرور" send_instructions: "سيصلك بريد إلكترونيّ قريبًا فيه إرشادات تصفير كلمة المرور." diff --git a/config/locales/devise/devise.art-nvi.yml b/config/locales/devise/devise.art-nvi.yml index 8ea0dc560..a15ca9cdf 100644 --- a/config/locales/devise/devise.art-nvi.yml +++ b/config/locales/devise/devise.art-nvi.yml @@ -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." diff --git a/config/locales/devise/devise.bg.yml b/config/locales/devise/devise.bg.yml index c06f9406e..fc711e86c 100644 --- a/config/locales/devise/devise.bg.yml +++ b/config/locales/devise/devise.bg.yml @@ -50,7 +50,6 @@ bg: change_password: "Промяна на паролата" new: forgot_password: "Забравена парола?" - no_account: "Не съществува акаунт с въведената ел. поща. Ако очаквате покана, знайте че ние ги раздаваме възможно най-бързо" send_password_instructions: "Изпращане на инструкции за възстановяване на паролата" send_instructions: "Ще получите ел. писмо с инструкции за промяна на паролата." updated: "Паролата е променена успешно. Сега сте вписани." diff --git a/config/locales/devise/devise.br.yml b/config/locales/devise/devise.br.yml index 7a69f754d..5304bc37f 100644 --- a/config/locales/devise/devise.br.yml +++ b/config/locales/devise/devise.br.yml @@ -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." diff --git a/config/locales/devise/devise.bs.yml b/config/locales/devise/devise.bs.yml index 54c2d9d98..8397de68c 100644 --- a/config/locales/devise/devise.bs.yml +++ b/config/locales/devise/devise.bs.yml @@ -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." diff --git a/config/locales/devise/devise.cs.yml b/config/locales/devise/devise.cs.yml index 9273ef7d3..7988eda06 100644 --- a/config/locales/devise/devise.cs.yml +++ b/config/locales/devise/devise.cs.yml @@ -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." diff --git a/config/locales/devise/devise.cy.yml b/config/locales/devise/devise.cy.yml index 97dfae845..ec5fa7e31 100644 --- a/config/locales/devise/devise.cy.yml +++ b/config/locales/devise/devise.cy.yml @@ -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: diff --git a/config/locales/devise/devise.da.yml b/config/locales/devise/devise.da.yml index 8243f6d7d..eb68bee89 100644 --- a/config/locales/devise/devise.da.yml +++ b/config/locales/devise/devise.da.yml @@ -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." diff --git a/config/locales/devise/devise.de-moo.yml b/config/locales/devise/devise.de-moo.yml index 78e47d7e5..689f20c70 100644 --- a/config/locales/devise/devise.de-moo.yml +++ b/config/locales/devise/devise.de-moo.yml @@ -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." diff --git a/config/locales/devise/devise.de.yml b/config/locales/devise/devise.de.yml index a07c3d995..8c2148a60 100644 --- a/config/locales/devise/devise.de.yml +++ b/config/locales/devise/devise.de.yml @@ -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." diff --git a/config/locales/devise/devise.de_formal.yml b/config/locales/devise/devise.de_formal.yml index 5e836020e..116d5f9ca 100644 --- a/config/locales/devise/devise.de_formal.yml +++ b/config/locales/devise/devise.de_formal.yml @@ -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." diff --git a/config/locales/devise/devise.el.yml b/config/locales/devise/devise.el.yml index a3092ad6b..24f5fe522 100644 --- a/config/locales/devise/devise.el.yml +++ b/config/locales/devise/devise.el.yml @@ -54,7 +54,6 @@ el: new: email: "Διεύθυνση email" forgot_password: "Ξεχάσατε τον κωδικό σας;" - no_account: "Δεν υπάρχει λογαριασμός με αυτό το email. Αν περιμένετε για πρόσκληση, θα γίνουν αποστολές το συντομότερο δυνατόν" reset_password: "Επαναφορά κωδικού" send_password_instructions: "Στείλτε μου οδηγίες επαναφοράς κωδικού" send_instructions: "Θα λάβετε ένα email με οδηγίες για το πως να επαναφέρετε τον κωδικό πρόσβασης σας σε λίγα λεπτά." diff --git a/config/locales/devise/devise.en_1337.yml b/config/locales/devise/devise.en_1337.yml index c9d9f584e..3f78ebae3 100644 --- a/config/locales/devise/devise.en_1337.yml +++ b/config/locales/devise/devise.en_1337.yml @@ -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" diff --git a/config/locales/devise/devise.en_shaw.yml b/config/locales/devise/devise.en_shaw.yml index c3403e868..bcc5e08d0 100644 --- a/config/locales/devise/devise.en_shaw.yml +++ b/config/locales/devise/devise.en_shaw.yml @@ -46,7 +46,6 @@ en_shaw: change_password: "𐑗𐑱𐑯𐑡 𐑥𐑲 𐑐𐑨𐑕𐑢𐑼𐑛" new: forgot_password: "𐑓𐑹𐑜𐑪𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛?" - no_account: "𐑯𐑴 𐑩𐑒𐑬𐑯𐑑 𐑢𐑦𐑞 𐑞𐑦𐑕 𐑦-𐑥𐑱𐑤 𐑧𐑜𐑟𐑦𐑕𐑑𐑕. 𐑦𐑓 𐑿 𐑸 𐑢𐑱𐑑𐑦𐑙 𐑓𐑹 𐑩𐑯 𐑦𐑯𐑝𐑲𐑑, 𐑢𐑰 𐑸 𐑮𐑴𐑤𐑦𐑙 𐑞𐑧𐑥 𐑬𐑑 𐑨𐑟 𐑕𐑵𐑯 𐑨𐑟 𐑐𐑪𐑕𐑦𐑚𐑩𐑤" send_password_instructions: "𐑕𐑧𐑯𐑛 𐑥𐑰 𐑮𐑦𐑕𐑧𐑑 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟" send_instructions: "𐑿 𐑢𐑦𐑤 𐑮𐑦𐑕𐑰𐑝 𐑩𐑯 𐑦-𐑥𐑱𐑤 𐑢𐑦𐑞 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟 𐑩𐑚𐑬𐑑 𐑣𐑬 𐑑 𐑮𐑦𐑕𐑧𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯 𐑩 𐑓𐑿 𐑥𐑦𐑯𐑩𐑑𐑕." updated: "𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑢𐑪𐑟 𐑗𐑱𐑯𐑡𐑛 𐑕𐑩𐑒𐑕𐑧𐑕𐑓𐑫𐑤𐑦. 𐑿 𐑸 𐑯𐑬 𐑕𐑲𐑯𐑛 𐑦𐑯." diff --git a/config/locales/devise/devise.en_valspeak.yml b/config/locales/devise/devise.en_valspeak.yml index 052b6572f..51159c2d4 100644 --- a/config/locales/devise/devise.en_valspeak.yml +++ b/config/locales/devise/devise.en_valspeak.yml @@ -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" diff --git a/config/locales/devise/devise.eo.yml b/config/locales/devise/devise.eo.yml index a11e2af00..8244a70cf 100644 --- a/config/locales/devise/devise.eo.yml +++ b/config/locales/devise/devise.eo.yml @@ -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." diff --git a/config/locales/devise/devise.es-AR.yml b/config/locales/devise/devise.es-AR.yml index 3b39eecf1..c22f4d628 100644 --- a/config/locales/devise/devise.es-AR.yml +++ b/config/locales/devise/devise.es-AR.yml @@ -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." diff --git a/config/locales/devise/devise.es-CL.yml b/config/locales/devise/devise.es-CL.yml index a0c900776..1f2e1a2d5 100644 --- a/config/locales/devise/devise.es-CL.yml +++ b/config/locales/devise/devise.es-CL.yml @@ -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." diff --git a/config/locales/devise/devise.es-MX.yml b/config/locales/devise/devise.es-MX.yml index afb2b5481..398ea72e6 100644 --- a/config/locales/devise/devise.es-MX.yml +++ b/config/locales/devise/devise.es-MX.yml @@ -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." diff --git a/config/locales/devise/devise.es.yml b/config/locales/devise/devise.es.yml index cbf73e3a9..797f02f9d 100644 --- a/config/locales/devise/devise.es.yml +++ b/config/locales/devise/devise.es.yml @@ -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." diff --git a/config/locales/devise/devise.et.yml b/config/locales/devise/devise.et.yml index 132ebbbbb..fdb805020 100644 --- a/config/locales/devise/devise.et.yml +++ b/config/locales/devise/devise.et.yml @@ -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." diff --git a/config/locales/devise/devise.eu.yml b/config/locales/devise/devise.eu.yml index b855e8124..80e01cefc 100644 --- a/config/locales/devise/devise.eu.yml +++ b/config/locales/devise/devise.eu.yml @@ -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." diff --git a/config/locales/devise/devise.fi.yml b/config/locales/devise/devise.fi.yml index d0030e248..d102a6455 100644 --- a/config/locales/devise/devise.fi.yml +++ b/config/locales/devise/devise.fi.yml @@ -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." diff --git a/config/locales/devise/devise.fr.yml b/config/locales/devise/devise.fr.yml index 7855c95f9..c50dcf6d9 100644 --- a/config/locales/devise/devise.fr.yml +++ b/config/locales/devise/devise.fr.yml @@ -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." diff --git a/config/locales/devise/devise.he.yml b/config/locales/devise/devise.he.yml index ecc0c8f05..d17dae6ac 100644 --- a/config/locales/devise/devise.he.yml +++ b/config/locales/devise/devise.he.yml @@ -54,7 +54,6 @@ he: new: email: "כתובת דוא\"ל" forgot_password: "שכחת את סיסמתך?" - no_account: "לא קיים חשבון עם כתובת דוא״ל זו" reset_password: "איפוס סיסמה" send_password_instructions: "שליחת הנחיות איפוס הססמה אלי" send_instructions: "בעוד מספר דקות תתקבל בתיבת הדוא״ל שלך הודעה עם הנחיות כיצד לאפס את סיסמתך." diff --git a/config/locales/devise/devise.hu.yml b/config/locales/devise/devise.hu.yml index f0e29db72..e7730cba2 100644 --- a/config/locales/devise/devise.hu.yml +++ b/config/locales/devise/devise.hu.yml @@ -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." diff --git a/config/locales/devise/devise.hye-classical.yml b/config/locales/devise/devise.hye-classical.yml index c71e60362..50a0953c0 100644 --- a/config/locales/devise/devise.hye-classical.yml +++ b/config/locales/devise/devise.hye-classical.yml @@ -61,7 +61,6 @@ hye-classical: new: email: "Էլ․ հասցէ" forgot_password: "Մոռացե՞լ ես գաղտնաբառդ" - no_account: "Այս էլ.հասցէով հաշիւ չկայ։" reset_password: "Վերականգնել գաղտնաբառը" send_password_instructions: "Ուղարկէք ինձ գաղտնաբառը փոխելու ցուցումները" no_token: "Այս էջը հասանելի է միայն գաղտնաբառը վերականգնելու յղումով նամակից գալու դէպքում։ Եթէ հէնց այդտեղից է, որ եկել ես, հաւաստիացիր, որ ամբողջական յղումն ես օգտագործել։" diff --git a/config/locales/devise/devise.hye.yml b/config/locales/devise/devise.hye.yml index 0f7810430..a16917e5d 100644 --- a/config/locales/devise/devise.hye.yml +++ b/config/locales/devise/devise.hye.yml @@ -59,7 +59,6 @@ hye: new: email: "Էլ․հասցե" forgot_password: "Մոռացե՞լ ես գաղտնաբառդ" - no_account: "Այս էլ.հասցեով հաշիվ չկա։" reset_password: "Վերականգնել գաղտնաբառը" send_password_instructions: "Ուղարկեք ինձ գաղտնաբառը փոխելու ցուցումները" no_token: "Այս էջը հասանելի է միայն գաղնաբառը վերականգնելու հղումով նամակից գալու դեպքում։ Եթե հենց այդտեղից է, որ եկել ես, հավաստիացիր, որ ամբողջական հղումն ես օգտագործել։" diff --git a/config/locales/devise/devise.ia.yml b/config/locales/devise/devise.ia.yml index a136688b2..b950b6a63 100644 --- a/config/locales/devise/devise.ia.yml +++ b/config/locales/devise/devise.ia.yml @@ -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." diff --git a/config/locales/devise/devise.id.yml b/config/locales/devise/devise.id.yml index d05e206a5..ba9c6d945 100644 --- a/config/locales/devise/devise.id.yml +++ b/config/locales/devise/devise.id.yml @@ -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." diff --git a/config/locales/devise/devise.is.yml b/config/locales/devise/devise.is.yml index 5e3b06edb..9ffef47bb 100644 --- a/config/locales/devise/devise.is.yml +++ b/config/locales/devise/devise.is.yml @@ -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." diff --git a/config/locales/devise/devise.it.yml b/config/locales/devise/devise.it.yml index d98fc1a09..ad7e1a328 100644 --- a/config/locales/devise/devise.it.yml +++ b/config/locales/devise/devise.it.yml @@ -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." diff --git a/config/locales/devise/devise.ja.yml b/config/locales/devise/devise.ja.yml index 17bb41697..3cd4aaf70 100644 --- a/config/locales/devise/devise.ja.yml +++ b/config/locales/devise/devise.ja.yml @@ -62,7 +62,6 @@ ja: new: email: "メールアドレス" forgot_password: "パスワードを忘れましたか?" - no_account: "このメールアドレスに一致するアカウントは存在しません" reset_password: "パスワードの再設定" send_password_instructions: "パスワード再発行の手続きメールを送ってください。" no_token: "パスワードリセットのメールからではないと、このページにアクセスすることはできません。パスワードリセットのメールから来た場合は、提供された完全なURLを使用していることを確認してください。" diff --git a/config/locales/devise/devise.ka.yml b/config/locales/devise/devise.ka.yml index ee749762a..abe1c3e0e 100644 --- a/config/locales/devise/devise.ka.yml +++ b/config/locales/devise/devise.ka.yml @@ -50,7 +50,6 @@ ka: change_password: "ჩემი პაროლის შეცვლა" new: forgot_password: "დაგავიწყდათ თქვენი პაროლი?" - no_account: "ამ ელ-ფოსტით ანგარიში არ არსებობს. თუ თქვენ მოსაწვევს ელოდებით, ჩვენ მათ დაგზავნას რაც შეიძლება მალე მოვახდენთ" send_password_instructions: "გამომიგზავნეთ პაროლის განახლების ინსტრუქცია" send_instructions: "თქვენ რამდენიმე წუთში მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორ უნდა შეცვალოთ თქვენი პაროლი." updated: "პაროლი წარამტებით შეიცვალა. თქვენ ახლა შემოსული ხართ." diff --git a/config/locales/devise/devise.ko.yml b/config/locales/devise/devise.ko.yml index 6a027fcb2..576f65508 100644 --- a/config/locales/devise/devise.ko.yml +++ b/config/locales/devise/devise.ko.yml @@ -54,7 +54,6 @@ ko: new: email: "이메일" forgot_password: "암호를 잊었습니까?" - no_account: "등록되지 않은 이메일 주소입니다." reset_password: "암호 재설정" send_password_instructions: "암호 재설정 메일 보내기" send_instructions: "몇 분 안으로 암호를 초기화하기 위한 이메일이 도착합니다." diff --git a/config/locales/devise/devise.lt.yml b/config/locales/devise/devise.lt.yml index 34e27ae0a..2461cb093 100644 --- a/config/locales/devise/devise.lt.yml +++ b/config/locales/devise/devise.lt.yml @@ -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." diff --git a/config/locales/devise/devise.mk.yml b/config/locales/devise/devise.mk.yml index 4813fd490..2c648a3ed 100644 --- a/config/locales/devise/devise.mk.yml +++ b/config/locales/devise/devise.mk.yml @@ -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: "Вашата лозинка беше успешно променета. Сега сте најавени." diff --git a/config/locales/devise/devise.ms.yml b/config/locales/devise/devise.ms.yml index b5cc36d6c..bb90cd9bd 100644 --- a/config/locales/devise/devise.ms.yml +++ b/config/locales/devise/devise.ms.yml @@ -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." diff --git a/config/locales/devise/devise.nb.yml b/config/locales/devise/devise.nb.yml index fca18e624..acea84092 100644 --- a/config/locales/devise/devise.nb.yml +++ b/config/locales/devise/devise.nb.yml @@ -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." diff --git a/config/locales/devise/devise.nds.yml b/config/locales/devise/devise.nds.yml index 60e950217..d3ef320d4 100644 --- a/config/locales/devise/devise.nds.yml +++ b/config/locales/devise/devise.nds.yml @@ -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." diff --git a/config/locales/devise/devise.nl.yml b/config/locales/devise/devise.nl.yml index 1aa3f9783..6106d5a8d 100644 --- a/config/locales/devise/devise.nl.yml +++ b/config/locales/devise/devise.nl.yml @@ -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." diff --git a/config/locales/devise/devise.nn.yml b/config/locales/devise/devise.nn.yml index 938ab4d33..f7a936c0f 100644 --- a/config/locales/devise/devise.nn.yml +++ b/config/locales/devise/devise.nn.yml @@ -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." diff --git a/config/locales/devise/devise.oc.yml b/config/locales/devise/devise.oc.yml index aaa1d1c00..7c3d8d285 100644 --- a/config/locales/devise/devise.oc.yml +++ b/config/locales/devise/devise.oc.yml @@ -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." diff --git a/config/locales/devise/devise.pa.yml b/config/locales/devise/devise.pa.yml index 36f3cc881..90d4af823 100644 --- a/config/locales/devise/devise.pa.yml +++ b/config/locales/devise/devise.pa.yml @@ -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: diff --git a/config/locales/devise/devise.pl.yml b/config/locales/devise/devise.pl.yml index ce7dbc522..9c420e58e 100644 --- a/config/locales/devise/devise.pl.yml +++ b/config/locales/devise/devise.pl.yml @@ -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." diff --git a/config/locales/devise/devise.pt-BR.yml b/config/locales/devise/devise.pt-BR.yml index 10a698c59..9abf94b9b 100644 --- a/config/locales/devise/devise.pt-BR.yml +++ b/config/locales/devise/devise.pt-BR.yml @@ -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." diff --git a/config/locales/devise/devise.pt-PT.yml b/config/locales/devise/devise.pt-PT.yml index f0a1cbbc0..b617786ae 100644 --- a/config/locales/devise/devise.pt-PT.yml +++ b/config/locales/devise/devise.pt-PT.yml @@ -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." diff --git a/config/locales/devise/devise.ro.yml b/config/locales/devise/devise.ro.yml index e748a7a6e..3060240e8 100644 --- a/config/locales/devise/devise.ro.yml +++ b/config/locales/devise/devise.ro.yml @@ -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(ă)." diff --git a/config/locales/devise/devise.ru.yml b/config/locales/devise/devise.ru.yml index da78c65de..8e4721f5d 100644 --- a/config/locales/devise/devise.ru.yml +++ b/config/locales/devise/devise.ru.yml @@ -62,7 +62,6 @@ ru: new: email: "E-mail" forgot_password: "Забыли пароль?" - no_account: "Аккаунт с таким E-mail не существует" reset_password: "Сброс пароля" send_password_instructions: "Отправить мне инструкции по сбросу пароля" no_token: "Эта страница доступна только из письма по сбросу пароля. Если вы пришли по ссылке из такого письма, то удостоверьтесь, что использовали полный путь, указаный в ссылке." diff --git a/config/locales/devise/devise.sc.yml b/config/locales/devise/devise.sc.yml index 5bec014de..3df2ef529 100644 --- a/config/locales/devise/devise.sc.yml +++ b/config/locales/devise/devise.sc.yml @@ -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." diff --git a/config/locales/devise/devise.sk.yml b/config/locales/devise/devise.sk.yml index bdb57702d..5f8a5f94b 100644 --- a/config/locales/devise/devise.sk.yml +++ b/config/locales/devise/devise.sk.yml @@ -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." diff --git a/config/locales/devise/devise.sl.yml b/config/locales/devise/devise.sl.yml index ec82852d2..93ce69bea 100644 --- a/config/locales/devise/devise.sl.yml +++ b/config/locales/devise/devise.sl.yml @@ -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." diff --git a/config/locales/devise/devise.sr.yml b/config/locales/devise/devise.sr.yml index 7b30bcb74..004f438e9 100644 --- a/config/locales/devise/devise.sr.yml +++ b/config/locales/devise/devise.sr.yml @@ -50,7 +50,6 @@ sr: change_password: "Промени лозинку" new: forgot_password: "Заборавили сте лозинку?" - no_account: "Не постоји налог са овим имејлом.  Ако чекаш позивницу, послаћемо је што пре можемо." send_password_instructions: "Пошаљите ми упутство за промену лозинке." send_instructions: "За пар минута ћеш примити имејл са упутством како да промениш лозинку." updated: "Успешно сте променили лозинку. Сада сте пријављени." diff --git a/config/locales/devise/devise.sv.yml b/config/locales/devise/devise.sv.yml index 1d61a9201..c06282c09 100644 --- a/config/locales/devise/devise.sv.yml +++ b/config/locales/devise/devise.sv.yml @@ -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." diff --git a/config/locales/devise/devise.te.yml b/config/locales/devise/devise.te.yml index 86209d875..5d48241d1 100644 --- a/config/locales/devise/devise.te.yml +++ b/config/locales/devise/devise.te.yml @@ -54,7 +54,6 @@ te: new: email: "ఈమెయిలు చిరునామా" forgot_password: "మీ సంకేతపదాన్ని మర్చిపోయారా?" - no_account: "ఈ ఈమెయిలుతో ఎటువంటి ఖాతా లేదు" reset_password: "సంకేతపదం మళ్ళీపెట్టు" send_password_instructions: "నాకు పాస్వర్డ్ను పునరుద్ధరించడానికి సూచనలను పంపండి" send_instructions: "మీకు కొన్ని నిమిషాల్లో మీ సంకేతపదాన్ని పునరుద్ధరించడానికి సూచనలతో ఈమెయిల్ వస్తుంది." diff --git a/config/locales/devise/devise.tr.yml b/config/locales/devise/devise.tr.yml index 84b08e113..0e2da8375 100644 --- a/config/locales/devise/devise.tr.yml +++ b/config/locales/devise/devise.tr.yml @@ -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." diff --git a/config/locales/devise/devise.uk.yml b/config/locales/devise/devise.uk.yml index 0dc4c8487..7ffdf12af 100644 --- a/config/locales/devise/devise.uk.yml +++ b/config/locales/devise/devise.uk.yml @@ -62,7 +62,6 @@ uk: new: email: "E-mail" forgot_password: "Забули пароль?" - no_account: "Аккаунт з таким E-mail не існує" reset_password: "Зміна паролю" send_password_instructions: "Відправити мені інструкції зі скидання пароля" no_token: "Ви не можете отримати доступ до цієї сторінки, не прийшовши скидання пароля з електронної пошти. Якщо ви прийшли з електронної пошти для скидання пароля, будь ласка, переконайтеся, що ви використовували повний URL." diff --git a/config/locales/devise/devise.vi.yml b/config/locales/devise/devise.vi.yml index 09a40f957..f78be7f0b 100644 --- a/config/locales/devise/devise.vi.yml +++ b/config/locales/devise/devise.vi.yml @@ -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." diff --git a/config/locales/devise/devise.zh-CN.yml b/config/locales/devise/devise.zh-CN.yml index 531f6fe6e..58bf44649 100644 --- a/config/locales/devise/devise.zh-CN.yml +++ b/config/locales/devise/devise.zh-CN.yml @@ -50,7 +50,6 @@ zh-CN: change_password: "修改密码" new: forgot_password: "忘记密码?" - no_account: "暂无与此邮箱关联的帐号。如果您在等待邀请函, 我们将尽快寄出." send_password_instructions: "请向我发送密码重置步骤" send_instructions: "几分钟内您将收到一封包含密码重置步骤的邮件。" updated: "密码修改成功。您已经登入了。" diff --git a/config/locales/devise/devise.zh-TW.yml b/config/locales/devise/devise.zh-TW.yml index b34378975..44f636034 100644 --- a/config/locales/devise/devise.zh-TW.yml +++ b/config/locales/devise/devise.zh-TW.yml @@ -62,7 +62,6 @@ zh-TW: new: email: "電子信箱" forgot_password: "忘記密碼了嗎?" - no_account: "沒有和這個電子信箱關聯的帳號" reset_password: "重設密碼" send_password_instructions: "傳送密碼重設的步驟給我" no_token: "這個頁面只給重設密碼的電子郵件使用。如果你真的是點密碼重設信件過來的,請確定用的是信件中完整的網址。" diff --git a/config/locales/diaspora/bg.yml b/config/locales/diaspora/bg.yml index ea39a0833..0743109c9 100644 --- a/config/locales/diaspora/bg.yml +++ b/config/locales/diaspora/bg.yml @@ -510,6 +510,41 @@ bg: follow: "Следете #%{tag}" none: "Не съществува празна марка!" stop_following: "Прекратяване следването на #%{tag}" + two_factor_auth: + activated: + change_button: "Деактивирай" + change_label: "Деактивирайте двуфакторното удостоверяване, като въведете Вашата парола" + status: "Двуфакторното удостоверяване е активирано." + confirm: + activate_button: "Потвърди и активирай" + input_explanation: "След като сканирате или въведете тайната, въведете 6-цифровия код, който виждате и потвърдете настройката." + input_title: "Потвърди с ВБЕП ключ." + manual_explanation: "В случай, че не можете да сканирате QR кода автоматично, можете ръчно да въведете тайната във Вашето приложение." + manual_explanation_cont: "Ние използваме времево-базирани еднократни пароли (ВБЕП) с 6-цифрови ключове. В случай, че Вашето приложение поиска времеви интервал и алгоритъм, въведете съответно 30 секунди и sha1.
Интервалите са просто за по-лесно четене, моля, въведете кода без тях." + scan_explanation: "Моля, сканирайте QR кода с ВБЕП приложение, като andOTP (Андроид), FreeOTP (iOS), SailOTP (SailfishOS)." + scan_title: "Сканирай QR кода" + status: "Двуфакторното удостоверяване все още не е напълно активирано. Трябва да потвърдите активацията с ВБЕП ключ." + title: "Потвърждение на активирането" + deactivated: + change_button: "Активирай" + change_label: "Активиране на двуфакторно удостоверяване" + status: "Двуфакторното удостоверяване не е активирано." + explanation: "Двуфакторното удостоверяване е мощен начин да сте сигурни, че Вие сте единственият, който може да се вписва във Вашия акаунт. Когато се вписвате, ще въвеждате 6-цифрен код заедно с Вашата парола, за да докажете, че сте Вие. Но внимавайте: ако изгубите телефона си и кодовете за възстановяване, които сте създали, когато активирате тази услига, достъпът до Вашия акаунт в Диаспора ще бъде блокиран завинаги." + flash: + error_token: "Ключът е неправилен или невалиден" + success_activation: "Успешно активирано двуфакторно удостоверяване" + success_deactivation: "Успешно деактивирано двуфакторно удостоверяване" + input_token: + label: "Двуфакторен ключ" + placeholder: "6-цифров двуфакторен ключ" + recovery: + button: "Генерирай нови кодове за възстановяване" + explanation: "Ако някога изгубите достъп до телефона си, можете да ползвате някой от кодовете за възстановяване по-долу, за да получите достъп до акаунта си. Пазете кодовете за възстановяване на сигурно място. Например, можете да ги разпечатате на принтер и да ги съхранявате заедно с други важни документи." + explanation_short: "Кодовете за възстановяване Ви позволяват да получите достъп до акаунта си, ако изгубите Вашия телефон. Помнете, че можете да използвате всеки код за възстановяване само по веднъж." + invalidation_notice: "Ако сте изгубили Вашите кодове за възстановяване, можете да генерирате нови тук. Старите Ви кодове ще бъдат анулирани." + reminder: "Като алтернатива, можете да ползвате някой от кодовете за възстановяване." + title: "Кодове за възстановяване" + title: "Двуфакторно удостоверяване" username: "Потребителско име" users: confirm_email: diff --git a/config/locales/diaspora/da.yml b/config/locales/diaspora/da.yml index 1ba72e8bc..39b599da8 100644 --- a/config/locales/diaspora/da.yml +++ b/config/locales/diaspora/da.yml @@ -117,7 +117,7 @@ da: are_you_sure_lock_account: "Er du sikker på at du vil låse denne konto?" are_you_sure_unlock_account: "Er du sikker på at du vil genåbne denne konto?" close_account: "Luk konto" - delete_admin: "%{name} er blevet fjernet fra admin-listen" + delete_admin: "%{name} er blevet fjernet fra admin-listen." delete_moderator: "%{name} er blevet fjernet fra moderator-listen." delete_spotlight: "%{name} er blevet fjernet fra community spotlight." does_not_exist: "Brugeren eksisterer ikke!" @@ -169,6 +169,9 @@ da: login_required: "Du skal logge ind for at kunne autorisere denne applikation" title: "Ups! Noget gik galt :(" scopes: + aud: + description: "Dette giver aud tilladelser til applicationen" + name: "aud" name: description: "Dette giver applikationen adgang til dit navn" name: "navn" @@ -205,7 +208,7 @@ da: tos: "Se applikationens servicevilkår" are_you_sure: "Er du sikker?" are_you_sure_delete_account: "Er du helt sikker på at du ønsker at lukke din konto? Det kan ikke fortrydes!" - are_you_sure_ignore_user: "Vil du ignorere denne bruger. Er du sikker?" + are_you_sure_ignore_user: "Du er ved at ignorere denne bruger. Er du sikker?" aspect_memberships: destroy: failure: "Kunne ikke fjerne person fra aspekt." @@ -485,7 +488,7 @@ da: format_text_q: "Hvordan kan jeg formatere teksten i mine indlæg (fed, kursiv, osv.)?" hide_posts_a: "Hvis du peger med musen på toppen af et indlæg vil et X dukke op til højre. Tryk på det for at skjule indlægget og fjerne notifikationer om det. Du kan stadig se indlægget hvis du besøger den person der lavede indlæggets profilside." hide_posts_q: "Hvordan skjuler jeg et indlæg?" - ignore_user_a1: "Hvis du deler med den pågældende person, vil det at fjerne dem fra dine aspekter stoppe de fleste af deres indlæg fra at vises i din strøm. En mere gennemgribende metode er at \"ignorere\" denne konto. Dette forhindrer, at deres indlæg vises i din strøm, og de kan ikke længere lide eller kommentere dine indlæg. De vil dog stadig være i stand til at videresende dine indlæg, kommentere videredelinger af dine indlæg, og deres kommentarer til indlæg fra andre personer der vises i din strøm, vil stadig være synlige for dig." + ignore_user_a1: "Hvis du deler med den pågældende person, vil det at fjerne dem fra dine aspekter stoppe de fleste af deres indlæg fra at vises i din strøm. En mere gennemgribende metode er at \"ignorere\" denne konto. Dette forhindrer, at deres indlæg vises i din strøm, og de kan ikke længere synes om eller kommentere dine indlæg. De vil dog stadig være i stand til at videredele dine indlæg, kommentere videredelinger af dine indlæg, og deres kommentarer til indlæg fra andre personer der vises i din strøm, vil stadig være synlige for dig." ignore_user_a2: "For at ignorere en konto skal du klikke på ikonet \"ignorér\" (en cirkel med en diagonal linje gennem) øverst til højre for et af deres indlæg. Deres indlæg forsvinder øjeblikkeligt fra din strøm. Alternativt kan du gå til deres profilside og klikke på ignoreringsikonet der. Du kan stadig se deres indlæg på deres profilside eller ved at bruge single-postvisningen." ignore_user_a3: "En liste over personer, du ignorerer, findes i dine kontoindstillinger under Privatliv. Hvis du vil stoppe med at ignorere nogen, skal du fjerne dem fra listen på den pågældende side." ignore_user_q: "Hvordan sørger jeg for at en brugers indlæg ikke optræder i min strøm?" @@ -643,6 +646,8 @@ da: public_feed: "Offentligt Diaspora-nyhedsfeed for %{name}" source_package: "Download kildekoden" statistics_link: "Pod statistik" + switch_to_standard_mode: "Skift til standard tilstand" + switch_to_touch_optimized_mode: "Skift til touch-optimeret tilstand" whats_new: "Hvad er nyt?" header: code: "Kode" @@ -1193,6 +1198,41 @@ da: one: "En person har brugt %{tag} tag" other: "%{count} personer har brugt %{tag} tag" zero: "Ingen har brugt %{tag} tag" + two_factor_auth: + activated: + change_button: "Deaktiver" + change_label: "Deaktiver to-faktor godkendelse ved at indtaste dit kodeord" + status: "To-faktor godkendelse aktiveret" + confirm: + activate_button: "Bekræft og aktiver" + input_explanation: "Efter at have skannet eller indtastet hemmeligheden skal du indtaste den sekscifrede kode du ser og bekræfte opsætningen." + input_title: "Bekræft med TOTP token" + manual_explanation: "Hvis du ikke kan scanne QR-koden automatisk, kan du manuelt indtaste hemmeligheden i din app." + manual_explanation_cont: "Vi bruger tidsbaserede engangsadgangskoder (TOTP) med sekscifrede symboler. Hvis din app beder dig om et tidsinterval og en algoritme, indtaster du 30 sekunder og sha1.
Mellemrummene er der kun for bedre læsbarhed. Indtast koden uden dem." + scan_explanation: "Skan venligst QR-koden med en TOTP-kompatibel app, f.eks. OgOTP (Android), FreeOTP (iOS), SailOTP (SailfishOS)." + scan_title: "Skan QR koden" + status: "To-faktor godkendelse er ikke fuldt aktiveret endnu. Du skal bekræfte aktivering med et TOTP-token" + title: "Bekræft aktivering" + deactivated: + change_button: "Aktiver" + change_label: "Aktiver to-faktor godkendelse" + status: "To-faktor godkendelse ikke aktiveret" + explanation: "To-faktor godkendelse er en effektiv måde at sikre, at du er den eneste, der kan logge ind på din konto. Når du logger ind, indtaster du en 6-cifret kode sammen med dit kodeord for at bevise din identitet. Husk dog at være forsigtig: hvis du mister din telefon og genoprettelseskoderne der oprettes når du aktiverer denne funktion, vil adgang til din Diaspora-konto blive blokeret for altid." + flash: + error_token: "Token var forkert eller ugyldigt" + success_activation: "Vellykket aktivering af to-faktor godkendelse" + success_deactivation: "Vellykket deaktivering af to-faktor godkendelse" + input_token: + label: "To-faktor token" + placeholder: "sekscifret to-faktor token" + recovery: + button: "Generer nye gendannelseskoder" + explanation: "Hvis du mister adgang til din telefon, kan du bruge en af genoprettelseskoderne nedenfor for at genvinde adgangen til din konto. Hold genoprettelseskoderne sikre. Du kan f.eks. udskrive dem og gemme dem sammen med andre vigtige dokumenter." + explanation_short: "Gendannelseskoder giver dig mulighed for at få adgang til din konto hvis du mister din telefon. Bemærk at du kun kan bruge hver genopretningskode én gang." + invalidation_notice: "Hvis du har mistet dine gendannelseskoder, kan du regenerere dem her. Dine gamle gendannelseskoder bliver herefter gjort ugyldige." + reminder: "Alternativt kan du bruge en af gendannelseskoderne." + title: "Gendannelseskoder" + title: "To-faktor godkendelse" username: "Brugernavn" users: confirm_email: @@ -1241,7 +1281,7 @@ da: new_password: "Nyt adgangskode" private_message: "... du har modtaget en privat besked." protocol_handler: - browser: "Denne protokol er i øjeblikket i den eksperimentelle fase, og om de interaktioner der bruger protokollen virker er afhængigt af din browser. Hvis du vil styre eller fjerne denne handler, gør du det via dine browserindstillinger. Knappen nedenfor vil altid være aktiveret, og du skal sætte handleren separat i hver browser du bruger." + browser: "Denne protokol er i øjeblikket i den eksperimentelle fase, og om de interaktioner der bruger protokollen virker, er afhængigt af din browser. Hvis du vil styre eller fjerne denne handler, gør du det via dine browserindstillinger. Knappen nedenfor vil altid være aktiveret, og du skal sætte handleren separat i hver browser du bruger." description: "web + diaspora: // er en ny webprotokol, som vi har introduceret. Ethvert link til en Diaspora-side på et eksternt websted der bruger denne protokol, kan åbnes i den pod hvor din Diaspora-konto er registreret. Klik på knappen nedenfor for at indstille din browser til at bruge %{pod_url} for at genkende eksterne web + diaspora: // links." register: "Registrer web+diaspora:// handler i denne browser" title: "web+diaspora:// protokol handler" diff --git a/config/locales/diaspora/de.yml b/config/locales/diaspora/de.yml index 662b22e6a..425848f97 100644 --- a/config/locales/diaspora/de.yml +++ b/config/locales/diaspora/de.yml @@ -208,6 +208,7 @@ de: tos: "Die Nutzungsbedingungen der Anwendung ansehen" are_you_sure: "Bist du dir sicher?" are_you_sure_delete_account: "Möchtest du dein Konto wirklich schließen? Dieser Schritt kann nicht rückgängig gemacht werden!" + are_you_sure_ignore_user: "Bist du sicher das du den Nutzer ignorieren möchtest?" aspect_memberships: destroy: failure: "Die Person konnte nicht aus dem Aspekt entfernt werden." @@ -645,6 +646,7 @@ de: public_feed: "Öffentlicher diaspora* Feed von %{name}" source_package: "Quelltextpaket runterladen" statistics_link: "Pod-Statistiken" + switch_to_standard_mode: "In den Standard-Modus wechseln" switch_to_touch_optimized_mode: "Wechseln zum touch-optimierten Modus" whats_new: "Was gibt’s Neues?" header: diff --git a/config/locales/diaspora/es-CL.yml b/config/locales/diaspora/es-CL.yml index b111fe1fc..9a4d81071 100644 --- a/config/locales/diaspora/es-CL.yml +++ b/config/locales/diaspora/es-CL.yml @@ -673,6 +673,20 @@ es-CL: follow: "Seguir a #%{tag}" none: "¡La etiqueta vacía no existe!" stop_following: "Dejar de seguir a #%{tag}" + two_factor_auth: + activated: + change_label: "Desactiva la verificación en dos pasos ingresando tu contraseña" + status: "Verificación en dos pasos activada" + confirm: + status: "La verificación en dos pasos no está completamente activada. Necesitas confirmar la activación con un token TOTP." + deactivated: + change_label: "Activar la verificación en dos pasos" + status: "La verificación en dos pasos no está activada" + explanation: "La verificación en dos pasos es una forma poderosa de asegurar que seas el único que puede acceder a tu cuenta. Al iniciar sesión, ingresarás un código de 6 dígitos junto a tu contraseña para demostrar tu identidad. Ten cuidado: si pierdes tu teléfono y los códigos de recuperación creados cuando actives esta característica, el acceso a tu cuenta de diaspora* será bloquedo para siempre." + flash: + success_activation: "Verificación en dos pasos activada exitosamente" + success_deactivation: "Verificación en dos pasos desactivada exitosamente" + title: "Verificación en dos pasos" username: "Nombre de usuario" users: confirm_email: diff --git a/config/locales/diaspora/fr.yml b/config/locales/diaspora/fr.yml index 64ca24f37..6b74d24c8 100644 --- a/config/locales/diaspora/fr.yml +++ b/config/locales/diaspora/fr.yml @@ -1183,6 +1183,43 @@ fr: one: "1 personne marquée avec %{tag}" other: "%{count} personnes marquées avec %{tag}" zero: "Personne n'est marqué avec %{tag}" + two_factor_auth: + activated: + change_button: "Désactiver" + change_label: "Désactivez la double authentification en saisissant votre mot de passe" + status: "La double authentification est activée" + confirm: + activate_button: "Confirmer et activer" + input_explanation: "Après avoir scanné ou saisi le secret, entrez le code à 6 chiffres affiché par l'application pour confirmer la mise en place de la double authentification." + input_title: "Confirmer avec un jeton TOTP" + manual_explanation: "Si vous ne pouvez pas scanner le code QR, vous pouvez saisir le secret manuellement dans votre application." + manual_explanation_cont: |- + Nous utilisons des codes à usage unique TOTP de 6 chiffres. Si votre application vous demande un intervalle de temps et un algorithme, choisissez 30 secondes et sha1 respectivement.
+ Les espaces sont juste ajoutés par souci de lisibilité, merci de les ignorer à la saisie. + scan_explanation: "Merci de scanner le code QR avec une application TOTP, telle que andOTP (Android), FreeOTP (iOS), SailOTP (SailfishOS)." + scan_title: "Scannez le code QR" + status: "La double authentification n'est pas encore complétement activée, vous devez confirmer l'activation avec un jeton TOTP" + title: "Confirmer l'activation" + deactivated: + change_button: "Activer" + change_label: "Activer la double authentification" + status: "Double authentification inactive" + explanation: "La double authentification est un moyen efficace de garantir que vous serez le seul à pouvoir vous identifier avec votre compte. À la connexion, vous saisirez un code à 6 chiffres en plus de votre mot de passe afin de prouver votre identité. Soyez prudent néanmoins : si vous égarez votre téléphone et vos codes de récupération créés à l'activation de cette fonctionnalité, vous perdrez définitivement l'accès à votre compte diaspora*." + flash: + error_token: "Le jeton est incorrect ou invalide" + success_activation: "Double authentification activée avec succès" + success_deactivation: "Double authentification désactivée avec succès" + input_token: + label: "Jeton de double authentification" + placeholder: "jeton de double authentification à 6 chiffres" + recovery: + button: "Générer des nouveaux codes de récupération" + explanation: "Si vous perdez l'accès à votre téléphone, vous pouvez utiliser l'un de ces codes de récupération pour récupérer l'accès à votre compte diaspora*. Gardez ces codes dans un lieu sûr. Par exemple, vous pouvez les imprimer et les ranger avec vos autres documents importants." + explanation_short: "Les codes de récupération vous permettent de récupérer l'accès à votre compte si vous perdez votre téléphone. Notez que chaque code de récupération ne peut être utilisé qu'une seule fois." + invalidation_notice: "Si vous avez perdu vos codes de récupération, vous pouvez les générer à nouveau ici. Vos précédents codes seront invalidés." + reminder: "Sinon, vous pouvez utiliser l'un de ces codes de récupération." + title: "Codes de récupération" + title: "Double authentification" username: "Nom d'utilisateur" users: confirm_email: diff --git a/config/locales/diaspora/hu.yml b/config/locales/diaspora/hu.yml index fa9c5cb52..f9f5e0e5a 100644 --- a/config/locales/diaspora/hu.yml +++ b/config/locales/diaspora/hu.yml @@ -281,9 +281,11 @@ hu: account_and_data_management: close_account_a: "Kattints a beállítások oldal alján található \"Fiók törlése\" gombra." close_account_q: "Hogyan törölhetek egy magot (a felhasználói fiókomat)?" + data_other_podmins_a: "Amikor egy másik pod felhasználójával megosztasz valamit, az adott kiszolgáló az összes megosztott bejegyzést, illetve a profiladataidról készült másolatot tárolja a saját adatbázisában (cache-eli), amelyek ezáltal hozzáférhetővé válnak az azt karbantartó személy számára. Ha törölsz egy bejegyzést vagy egy profiladatot, az törlődik az általad használt podról, amelyik ekkor törlési kérést küld az összes olyan pod felé, ahol korábban ez az adat már tárolódott. A képeid kizárólag a te kiszolgálódon rögzülnek, más podok csak hivatkozásokat kapnak róluk." data_other_podmins_q: "Más podok üzemeltetői láthatják az adataimat?" - data_visible_to_podmin_a: "Röviden: mindent. A podok közötti kapcsolat mindig titkosított (a diaspora* a saját protokollját és SSL-t használ), de a podokon tárolt adatok nincsenek kódolva. Ha az adott pod adatbázisának karbantartója (általában az a személy, aki a podot üzemelteti) szeretné, hozzáférhet minden profiladatodhoz és minden bejegyzésedhez (ahogy az a legtöbb felhasználói adatot tároló weboldalnál lenni szokott). Ezért hagyjuk meg neked a választás lehetőségét, hogy arra a podra iratkozz fel, amelyikre szeretnél, s hogy te dönthess, melyik pod rendszergazdájára bízod az adataidat. A saját podod üzemeltetése magasabb biztonságot jelent, hiszen te szabályozod az adatbázishoz való hozzáférést." + data_visible_to_podmin_a: "Röviden: mindent. A podok közötti kapcsolat mindig titkosított (a diaspora* a saját protokollját és SSL-t használ), de a podokon tárolt adatok nincsenek kódolva. Ha az adott pod adatbázisának karbantartója (általában az a személy, aki a podot üzemelteti) szeretné, hozzáférhet minden profiladatodhoz és minden bejegyzésedhez (ahogy az a legtöbb, felhasználói adatot tároló weboldalnál lenni szokott). Ezért hagyjuk meg neked a választás lehetőségét, hogy arra a podra iratkozz fel, amelyikre szeretnél, s hogy te dönthesd el, melyik pod rendszergazdájára bízod az adataidat. Saját pod üzemeltetése nagyobb biztonságot jelent, hiszen te szabályozod az adatbázishoz való hozzáférést." data_visible_to_podmin_q: "Mennyi adatot láthat rólam az általam használt pod üzemeltetője?" + download_data_a: "Igen. A Beállítások oldal \"felhasználói fiók\" nevű fülén találsz két gombot legalul: egyet az adataid letöltéséhez, egyet pedig a fényképeid letöltéséhez." download_data_q: "Letölthetek egy másolatot a magban (a felhasználói fiókomban) található összes adatomról?" move_pods_a: "A diaspora* 0.7.0.0 számú verziója megvalósítja a fiók elköltöztetésének első lépcsőfokát: mostantól letöltheted az összes adatodat a beállítások / felhasználói fiók / adatok letöltése menüpontban. Tartsd őket biztonságban! Egy későbbi kiadásban lehetőséged lesz a teljes fiókodat áttelepíteni egy másik podra, beleértve a bejegyzéseidet és az ismerőseid listáját is." move_pods_q: "Hogy tudom áthelyezni ezt a magot (a fiókomat) az egyik podról a másikra?" diff --git a/config/locales/diaspora/ia.yml b/config/locales/diaspora/ia.yml index 7a8401808..0f0dcb551 100644 --- a/config/locales/diaspora/ia.yml +++ b/config/locales/diaspora/ia.yml @@ -90,15 +90,18 @@ ia: week: "Septimana" user_entry: account_closed: "Conto claudite" + admin: "Administrator" diaspora_handle: "ID de diaspora*" email: "E-mail" guid: "GUID" id: "ID" invite_token: "Indicio de invitation" last_seen: "Ultime session" + moderator: "Moderator" ? "no" : "No" nsfw: "#nsfw" + spotlight: "In evidentia" unknown: "Incognite" ? "yes" : Si @@ -106,14 +109,29 @@ ia: account_closing_scheduled: "Le conto de %{name} es planate a esser claudite. Illo essera processate in alcun momentos…" account_locking_scheduled: "Le conto de %{name} es planate a esser blocate. Illo essera processate in alcun momentos…" account_unlocking_scheduled: "Le conto de %{name} es planate a esser disblocate. Illo essera processate in alcun momentos…" + add_admin: "%{name} ha essite facite administrator." add_invites: "Adder invitationes" + add_moderator: "%{name} ha essite facite moderator." + add_spotlight: "%{name} ha essite addite a \"Usatores in evidentia\"." are_you_sure: "Es tu secur de voler clauder iste conto?" are_you_sure_lock_account: "Es tu secur de voler blocar iste conto?" are_you_sure_unlock_account: "Es tu secur de voler disblocar iste conto?" close_account: "Clauder conto" + delete_admin: "%{name} ha essite removite del lista de administratores." + delete_moderator: "%{name} ha essite removite del lista de moderatores." + delete_spotlight: "%{name} ha essite removite de \"Usatores in evidentia\"." + does_not_exist: "Usator non existe!" email_to: "Adresse de e-mail a invitar" invite: "Invitar" lock_account: "Blocar conto" + make_admin: "Facer administrator" + make_moderator: "Facer moderator" + make_spotlight: "Adder a \"Usatores in evidentia\"" + remove_admin: "Remover como administrator" + remove_moderator: "Remover como moderator" + remove_spotlight: "Remover de \"Usatores in evidentia\"" + role_implemented: "%{name} ha jam recipite iste rolo!" + role_removal_implemented: "%{name} ha jam essite removite de iste rolo!" under_13: "Monstrar usatores con minus de 13 annos (COPPA)" unlock_account: "Disblocar conto" users: @@ -766,7 +784,7 @@ ia: body: |- Hallo %{name}, - Le tue datos personal ha essite processate e preparate pro discargamento. Pro discargar, seque [iste ligamine](%{url}). + Le archivo de tu datos personal ha essite preparate pro discargamento via [iste ligamine](%{url}). Amicalmente, @@ -946,7 +964,7 @@ ia: edit: allow_search: "Permitter que on te cerca in diaspora*" basic: "Mi profilo basic" - basic_hint: "Cata elemento de profilo es facultative. Le profilo basic es sempre visibile pro le publico." + basic_hint: "Cata elemento de tu profilo es optional. Le profilo basic es sempre visibile pro le publico." extended: "Mi profilo extendite" extended_hint: "Clicca sur le commutator pro definir le visibilitate de tu profilo extendite. \"Public\" vole dicer que illo es visibile pro tote le internet, \"limitate\" vole dicer que solmente le personas in tu aspectos de contacto videra iste information." extended_visibility_text: "Visibilitate de tu profilo extendite:" @@ -1197,7 +1215,7 @@ ia: edit_account: "Modificar conto" email_awaiting_confirmation: "Nos te ha inviate un ligamine de activation al adresse %{unconfirmed_email}. Usque al momento que tu seque iste ligamine pro activar le nove adresse, nos va continuar a usar tu adresse original %{email}." export_data: "Exportar datos" - export_in_progress: "Le datos personal tue es actualmente sub preparation. Per favor, reveni in alcun momentos." + export_in_progress: "Nos prepara in iste momento un archivo de tu datos personal. Per favor, reveni in alcun momentos." export_photos_in_progress: "Le tractamento de tu photos non ha ancora terminate. Per favor, essaya lo de novo in qualque momentos." following: "Configuration de divider" last_exported_html: "(Ultime actualisation %{timeago})" @@ -1207,8 +1225,9 @@ ia: new_password: "Contrasigno nove" private_message: "tu recipe un message private" protocol_handler: - description: "Un clic sur iste button demandara a tu navigator web de installar un gestor que permitte a nos de aperir le adresses URL web+diaspora:// sur tu pod principal. Isto es ancora experimental e le interactiones dependera de tu navigator web specific." - register: "Registrar" + browser: "Iste protocollo es actualmente in le stadio experimental e le successo del interactiones que lo usa dependera de tu navigator del web. Si tu vole modificar o remover iste gestor, tu debe facer lo via le configuration de tu navigator. Le button hic infra essera sempre activate, e tu debera configurar le gestor separatemente in cata navigator que tu usa." + description: "web+diaspora:// es un nove protocollo web que nos ha introducite. Omne ligamine a un pagina diaspora* sur un sito web externe que usa iste protocollo pote esser aperite in le pod que alberga tu conto diaspora*. Clicca sur le button hic infra pro facer que tu navigator del web usa %{pod_url} pro recognoscer le ligamines web+diaspora:// externe." + register: "Registrar le gestor web+diaspora:// sur iste navigator" title: "Gestor de protocollo web+diaspora://" receive_email_notifications: "Reciper notificationes per e-mail quando:" request_export: "Requestar le datos de mi profilo" diff --git a/config/locales/diaspora/it.yml b/config/locales/diaspora/it.yml index 5ca893ce6..c4f76f057 100644 --- a/config/locales/diaspora/it.yml +++ b/config/locales/diaspora/it.yml @@ -866,6 +866,40 @@ it: follow: "Segui #%{tag}" none: "Il tag vuoto non esiste!" stop_following: "Non seguire più #%{tag}" + two_factor_auth: + activated: + change_button: "Disattiva" + change_label: "Per disattivare l'autenticazione a due fattori inserire la propria password" + status: "Autenticazione a due fattori attivata" + confirm: + activate_button: "Confermare e attivare" + input_explanation: "Dopo avere scansionato o inserito il codice segreto inserite il codice di 6 cifre che vedrete sullo schermo e confermate il setup." + input_title: "Confermare con token TOTP" + manual_explanation: "Nel caso non sia possibile acquisire automaticamente il QR code è possibile inserire il codice segreto nell'app." + manual_explanation_cont: "Noi usiamo time-based one-time passwords (TOTP) con token di 6 cifre. Nel caso in cui la vostra app vi chieda un intervallo di tempo e l'algoritmo inserite rispettivamente un tempo di 30 secondi e il valore sha1.
Gli spazi sono inseriti solo per la leggibilità, inserite il codice senza di essi." + scan_explanation: "Si prega di scansionare il QR code con una app predisposta per il TOTP come AndOTP (Android), FreeOTP (iOS), SAilOTP (Sailfish OS)." + scan_title: "Scansionare il QR code" + status: "L'autenticazione a due fattori non è ancora pienamente attiva, è necessario confermate l'attivazione con un token TOTP" + title: "Confermare attivazione" + deactivated: + change_button: "Attivare" + change_label: "Attivare l'autenticazione a due fattori" + status: "Autenticazione a due fattori non attivata" + explanation: "L'autenticazione a due fattori è uno strumento potente per darvi la certezza di essere la sola persona in grado di accedere al vostro account. Al momento di collegarvi, dovrete inserire assieme alla vostra password un codice a 6 cifre per provare la vostra identità. Dovrete però stare attenti: se perdete il telefono e i codici di ripristino che verranno creati all'attivazione della funzionalità il vostro account su diaspora* sarà bloccato per sempre." + flash: + error_token: "Token sbagliato o non valido" + success_activation: "Autenticazione a due fattori attivata" + success_deactivation: "Autenticazione a due fattori disattivata" + input_token: + label: "Token a due fattori" + placeholder: "token a due fattori di sei cifre" + recovery: + button: "Generare i nuovi codici di recupero" + explanation: "Se non fosse più possibile accedere al proprio telefono, è ancora possibile usare uno dei seguenti codici di recupero per ottenere nuovamente l'accesso al proprio account. Tenete al sicuro questi codici, ad esempio stampandoli e conservandoli assieme agli altri documenti importanti." + explanation_short: "I codici di recupero permettono di riottenere l'accesso al proprio account in caso di smarrimento del telefono. Notare che ogni codice di recupero può essere utilizzato una volta sola." + invalidation_notice: "In caso di smarrimento dei codici di recupero possono essere rigenerati qui. I codici di recupero precedenti verranno invalidati." + reminder: "Come alternativa potete usare uno dei codici di recupero." + title: "Codici di recupero" username: "Nome Utente" users: confirm_email: diff --git a/config/locales/diaspora/ja.yml b/config/locales/diaspora/ja.yml index e67346183..0096821cc 100644 --- a/config/locales/diaspora/ja.yml +++ b/config/locales/diaspora/ja.yml @@ -97,6 +97,7 @@ ja: ? "no" : いいえ nsfw: "#nsfw" + spotlight: "スポットライト" unknown: "不明" ? "yes" : はい @@ -107,20 +108,26 @@ ja: add_admin: "%{name} さんは管理者に指定された。" add_invites: "招待を追加" add_moderator: "%{name} さんはモデレータとして指名された" + add_spotlight: "%{name} さんがコミュニティのスポットライトに追加されました。" are_you_sure: "このアカウントを削除してもよろしいですか?" are_you_sure_lock_account: "このアカウントをロックしてもよろしいですか?" are_you_sure_unlock_account: "このアカウントのロックを解除してもよろしいですか?" close_account: "アカウントを削除する" delete_admin: "%{name} さんは管理者から外された。" delete_moderator: "%{name} さんはモデレータから外された" + delete_spotlight: "%{name} さんがコミュニティのスポットライトから削除されました。" does_not_exist: "そのユーザは存在しません。" email_to: "招待のメール" invite: "招待" lock_account: "アカウントをロックする" make_admin: "このユーザーを管理者に指名する" make_moderator: "このユーザーをモデレーターに指名する" + make_spotlight: "コミュニティのスポットライトに追加する" remove_admin: "このユーザーを管理者から外す" remove_moderator: "このユーザーをモデレーターから外す" + remove_spotlight: "コミュニティのスポットライトから削除する" + role_implemented: "%{name} さんはすでにこの役割が与えられています!" + role_removal_implemented: "%{name} さんはすでにこの役割が削除されています!" under_13: "13歳以下のユーザーに表示する (COPPA)" unlock_account: "アカウントのロックを解除する" users: @@ -1144,6 +1151,41 @@ ja: tagged_people: other: "%{count} 人が %{tag} でタグ付けしています" zero: "誰も %{tag} でタグ付けしていません" + two_factor_auth: + activated: + change_button: "無効にする" + change_label: "パスワードを入力して2要素認証を無効にします" + status: "2要素認証を有効にしました" + confirm: + activate_button: "確認して有効にする" + input_explanation: "スキャンまたはシークレットを入力したら、表示された6桁のコードを入力して設定を確認します。" + input_title: "TOTPトークンで確認" + manual_explanation: "自動的にQRコードをスキャンできない場合は、手動でアプリにシークレットを入力できます。" + manual_explanation_cont: "6桁のトークンを使用した、時間ベースのワンタイムパスワード (TOTP) を使用しています。 アプリが、時間間隔とアルゴリズムを入力するように要求した場合は、それぞれ30秒とsha1を入力してください。
スペースは読みやすくするためのものです。スペースを入れずにコードを入力してください。" + scan_explanation: "andOTP (Android), FreeOTP (iOS), SailOTP (SailfishOS) などのTOTP対応アプリでQRコードをスキャンしてください。" + scan_title: "QRコードをスキャン" + status: "2要素認証はまだ完全に有効になっていません。TOTPトークンで有効化を確認する必要があります" + title: "有効化の確認" + deactivated: + change_button: "有効にする" + change_label: "2要素認証を有効にする" + status: "2要素認証は有効になっていません" + explanation: "2要素認証は、自分のアカウントにサインインできる唯一の人であることを確認するための強力な方法です。 サインインするときに、あなたのIDを証明するためにパスワードと共に6桁のコードを入力します。 ただし、ご注意ください。携帯電話を紛失したときや、この機能を有効にしたときに作成された回復コードをなくした場合は、ダイアスポラ* アカウントのアクセスは永久にブロックされます。" + flash: + error_token: "トークンが間違っているか無効です" + success_activation: "2要素認証を有効にしました" + success_deactivation: "2要素認証を無効にしました" + input_token: + label: "2要素トークン" + placeholder: "6桁の2要素トークン" + recovery: + button: "新しい回復コードを生成する" + explanation: "お使いの携帯電話にアクセスできなくなった場合、アカウントにアクセスできるようにするために下記の回復コードを一つ使うことができます。 回復コードを安全に保管してください。 例えば、それらを印刷して他の重要な書類と共に保存することができます。" + explanation_short: "回復コードを使用すると、お使いの携帯電話を紛失した場合でもアカウントへのアクセスを取り戻すことができます。 それぞれの回復コードは1回しか使用できません。" + invalidation_notice: "回復コードを紛失した場合は、ここで再生成できます。 古い回復コードは無効になります。" + reminder: "あるいは、回復コードを1つ使用することができます。" + title: "回復コード" + title: "2 要素認証" username: "ユーザー名" users: confirm_email: @@ -1192,6 +1234,7 @@ ja: new_password: "新しいパスワード" private_message: "非公開メッセージが届いたとき" protocol_handler: + browser: "このプロトコルは現在実験段階で、それを使ったインタラクションが成功するかどうかはご利用のブラウザに依存します。 この処理を管理または削除したい場合は、ブラウザの設定でこれを行ってください。 下のボタンは常に有効になっているので、使用するブラウザごとに個別に処理を設定する必要があります。" description: "このボタンをクリックするとホームポッドの web+diaspora:// URLを開くことができるハンドラをインストールするようにブラウザに要求されます。これは現在実験中で対応はブラウザによって異なります。" register: "登録" title: "web+diaspora:// プロトコルハンドラ" diff --git a/config/locales/diaspora/pt-BR.yml b/config/locales/diaspora/pt-BR.yml index 68344f888..ca57342ef 100644 --- a/config/locales/diaspora/pt-BR.yml +++ b/config/locales/diaspora/pt-BR.yml @@ -1176,6 +1176,41 @@ pt-BR: one: "1 pessoa marcada com %{tag}" other: "%{count} pessoas marcadas com %{tag}" zero: "Ninguém marcado com %{tag}" + two_factor_auth: + activated: + change_button: "Desativar" + change_label: "Insira sua senha para desativar a autenticação em duas etapas" + status: "Autenticação em duas etapas ativada" + confirm: + activate_button: "Confirmar e ativar" + input_explanation: "Depois de escanear ou digitar a senha, insira o código de seis dígitos que apareceu para você e confirme." + input_title: "Confirme com o código TOTP" + manual_explanation: "Caso não possa escanear o código QR de forma automática, digite a senha manualmente no aplicativo." + manual_explanation_cont: "Usamos senhas únicas baseadas em tempo (TOTP) com códigos de seis dígitos. Caso o seu aplicativo pergunte intervalo de tempo e algoritmo, insira 30 segundos e sha1, respectivamente.
Os espaços servem apenas para melhorar a legibilidade; por favor, digite o código sem eles." + scan_explanation: "Por favor, escaneie o código QR com um aplicativo que leia TOTP, tal como andOTP (Android), FreeOTP (iOS), SailOTP (SailfishOS)." + scan_title: "Escaneie o código QR" + status: "A autenticação em duas etapas ainda não foi ativada completamente; você precisa confirmar a ativação com um código TOTP." + title: "Confirmar ativação" + deactivated: + change_button: "Ativar" + change_label: "Ativar autenticação em duas etapas" + status: "Autenticação em duas etapas desativada" + explanation: "A autenticação em duas etapas é uma maneira eficiente de garantir que você seja a única pessoa capaz de entrar na sua conta. Ao entrar, você terá que digitar um código de seis dígitos além da sua senha para provar a sua identidade. Mas cuidado: se você perder seu celular e os códigos de recuperação criados durante a ativação deste recurso, o acesso à sua conta na diaspora* será bloqueado para sempre." + flash: + error_token: "Código incorreto ou inválido" + success_activation: "Autenticação em duas etapas ativada com sucesso" + success_deactivation: "Autenticação em duas etapas desativada com sucesso" + input_token: + label: "Código de autenticação" + placeholder: "código de autenticação com seis dígitos" + recovery: + button: "Gerar novos códigos de recuperação" + explanation: "Se algum dia você perder o seu celular, você pode usar um dos códigos de recuperação abaixo para recuperar o acesso à sua conta. Guarde-os em segurança. Por exemplo, você pode imprimi-los e armazená-los junto com outros documentos importantes." + explanation_short: "Códigos de recuperação permitem que você recupere o acesso à conta caso você perca seu celular. Repare que você só pode usar cada código uma única vez." + invalidation_notice: "Se você perder seus códigos de recuperação, pode regerá-los aqui. Os antigos serão invalidados." + reminder: "Uma alternativa é usar um dos códigos de recuperação." + title: "Códigos de recuperação" + title: "Autenticação em duas etapas" username: "Usuário" users: confirm_email: diff --git a/config/locales/diaspora/sv.yml b/config/locales/diaspora/sv.yml index f7266bb75..bc3ec6f71 100644 --- a/config/locales/diaspora/sv.yml +++ b/config/locales/diaspora/sv.yml @@ -90,15 +90,18 @@ sv: week: "Vecka" user_entry: account_closed: "Konto borttaget" + admin: "Administratör" diaspora_handle: "Diaspora*-id" email: "E-post" guid: "Globalt identifieringsnummer (GUID)" id: "id" invite_token: "Inbjudningskort" last_seen: "Sedd senast" + moderator: "Moderator" ? "no" : Nej nsfw: "#nsfw" + spotlight: "Strålkastarljus" unknown: "Okänd" ? "yes" : Ja @@ -106,14 +109,29 @@ sv: account_closing_scheduled: "Kontot för %{name} är låst och kommer att raderas om en stund." account_locking_scheduled: "Kontot för användaren %{name} är schemalagt för att låsas. Det kommer ske om en liten stund..." account_unlocking_scheduled: "Kontot för användaren %{name} är schemalagt för att låsas upp. Det kommer ske om en liten stund..." + add_admin: "%{name} har skapats som admin." add_invites: "Lägg till inbjudningar" + add_moderator: "%{name} har gjorts till moderator." + add_spotlight: "%{name} har lagts till i strålkastarljuset." are_you_sure: "Är du säker på att du vill ta bort ditt konto?" are_you_sure_lock_account: "Är du säker på att du vill låsa detta konto?" are_you_sure_unlock_account: "Är du säker på att du vill låsa upp detta konta?" close_account: "Ta bort konto" + delete_admin: "%{name} har tagits bort från administratörslistan." + delete_moderator: "%{name} har tagits bort från moderatorlistan." + delete_spotlight: "%{name} har tagits ut ur strålkastarljuset." + does_not_exist: "Användare finns inte!" email_to: "Skicka ett e-brev för att bjuda in" invite: "Bjud in" lock_account: "Lås konto" + make_admin: "Skapa admin" + make_moderator: "Skapa moderator" + make_spotlight: "Lägg till i strålkastarljuset" + remove_admin: "Ta bort som admin" + remove_moderator: "Ta bort som moderator" + remove_spotlight: "Ta bort ur strålkastarljustet" + role_implemented: "%{name} har redan tillgivits rollen!" + role_removal_implemented: "%{name} har redan ifråntagits rollen!" under_13: "Visa användare som är yngre än 13 år" unlock_account: "Lås upp konto" users: @@ -190,6 +208,7 @@ sv: tos: "Kika på tillämpningens användarvillkor." are_you_sure: "Är du säker?" are_you_sure_delete_account: "Är du säker på att du vill avsluta ditt konto? Detta kan inte ångras!" + are_you_sure_ignore_user: "Du kommer att ignorera användaren. Är du säker på din sak?" aspect_memberships: destroy: failure: "Kunde inte ta bort personen från aspekten" @@ -627,6 +646,8 @@ sv: public_feed: "Offentligt Diaspora*-flöde för %{name}" source_package: "Ladda ned källkodspaketet" statistics_link: "Serverstatistik" + switch_to_standard_mode: "Ändra till standardläge." + switch_to_touch_optimized_mode: "Ändra till fingervänligt läge." whats_new: "Vad är nytt?" header: code: "Källkod" @@ -1164,6 +1185,21 @@ sv: one: "En person är taggad med %{tag}" other: "%{count} personer är taggade med %{tag}" zero: "Ingen har taggats med %{tag}" + two_factor_auth: + activated: + change_button: "Inaktivera" + change_label: "Inaktivera tvåfaktorautentisering med ditt lösenord" + status: "Tvåfaktorautentisering aktiverat" + confirm: + scan_title: "Läs in QR-kod" + status: "Tvåfaktorautentisering har inte the fullo aktiverats än. Du behöver verifiera med en TOTP-pollett." + title: "Bekräfta aktivering" + deactivated: + change_button: "Aktivera" + change_label: "Aktivera tvåfaktorautentisering" + status: "Tvåfaktorautentisering inaktiverat" + explanation: "Tvåfaktorautentisering är ett kraftfullt sätt att försäkra om att det bara är du som kan logga in på ditt konto. När du loggar in, kommer du ange en sexsiffrig kod tillsammans med ditt löseord för att påvisa din identitet. Men var ändock aktsam: om du blir av med din telefon och koderna som genereras för denna funktionalitet, kommer du aldrig kunna komma åt ditt konto igen." + title: "Tvåfaktorautentisering" username: "Användarnamn" users: confirm_email: diff --git a/config/locales/javascript/javascript.da.yml b/config/locales/javascript/javascript.da.yml index 53c645d05..2a35067ef 100644 --- a/config/locales/javascript/javascript.da.yml +++ b/config/locales/javascript/javascript.da.yml @@ -133,6 +133,7 @@ da: recent_notifications: "Seneste notifikationer" search: "Søg" settings: "Indstillinger" + switch_to_touch_optimized_mode: "Skift til touch-optimeret tilstand" toggle_navigation: "Slå navigation til/fra" view_all: "Se alle" hide_post: "Skjul dette indlæg?" diff --git a/config/locales/javascript/javascript.de.yml b/config/locales/javascript/javascript.de.yml index 5903b4129..7b8ec8bda 100644 --- a/config/locales/javascript/javascript.de.yml +++ b/config/locales/javascript/javascript.de.yml @@ -133,6 +133,7 @@ de: recent_notifications: "Neuste Benachrichtigungen" search: "Suchen" settings: "Einstellungen" + switch_to_touch_optimized_mode: "In den touch-optimierten Modus wechseln" toggle_navigation: "Navigation umschalten" view_all: "Alle anzeigen" hide_post: "Diesen Beitrag ausblenden?" diff --git a/config/locales/javascript/javascript.ja.yml b/config/locales/javascript/javascript.ja.yml index 2ef3f4121..18b593cbd 100644 --- a/config/locales/javascript/javascript.ja.yml +++ b/config/locales/javascript/javascript.ja.yml @@ -53,15 +53,15 @@ ja: up_to_date: "ポッドは最新です!" and: "および" aspect_dropdown: - add_to_aspect: "Add to aspect" + add_to_aspect: "アスペクトに追加" all_aspects: "全てのアスペクト" error: "<%= name %>さんとシェアを始めることができません。 無視しますか?" error_remove: "アスペクトから<%= name %>さんを削除できませんでした :(" mobile_row_checked: "<%= name %> (削除)" mobile_row_unchecked: "<%= name %> (追加)" select_aspects: "アスペクトを選択する" - started_sharing_with: "You have started sharing with <%= name %>!" - stopped_sharing_with: "You have stopped sharing with <%= name %>." + started_sharing_with: "<%= name %>さんとシェアを始めました!" + stopped_sharing_with: "<%= name %>さんとシェアをやめました。" toggle: other: "<%= count %> アスペクトに" zero: "<%= count %> アスペクトに" @@ -87,7 +87,7 @@ ja: hide: "コメントを隠す" no_comments: "まだコメントはありません。" show: "全てのコメントを表示する" - confirm_dialog: "本当にいいですか。" + confirm_dialog: "よろしいですか?" confirm_unload: "このページを離れることを確認してください。入力したデータは保存されません。" contacts: add_contact: "連絡先を追加" @@ -111,7 +111,7 @@ ja: failed_to_remove: "エントリーの削除に失敗しました!" getting_started: alright_ill_wait: "OK、私は待ちます。" - hey: "Hey, <%= name %>!" + hey: "こんにちは。 <%= name %> さん!" no_tags: "タグを何もフォローしていません!続行しますか?" preparing_your_stream: "パーソナライズ ストリームを準備しています..." header: -- cgit v1.2.3