Merge branch 'develop' into api
This commit is contained in:
commit
39c863ead9
250 changed files with 2476 additions and 1272 deletions
|
|
@ -16,7 +16,6 @@
|
|||
"Handlebars": false,
|
||||
"HandlebarsTemplates": false,
|
||||
"ImagePaths": false,
|
||||
"jsxc": false,
|
||||
"L": false,
|
||||
"OSM": false,
|
||||
"PerfectScrollbar": false,
|
||||
|
|
|
|||
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,8 +1,3 @@
|
|||
# XMPP certificates, keys and user data
|
||||
config/certs/*.crt
|
||||
config/certs/*.key
|
||||
config/prosody.cfg.lua
|
||||
|
||||
# Trademark sillyness
|
||||
app/views/home/_show.*
|
||||
app/views/terms/terms.*
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
require: rubocop-rails
|
||||
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.3
|
||||
Exclude:
|
||||
|
|
@ -5,9 +7,6 @@ AllCops:
|
|||
- "db/schema.rb"
|
||||
- "config/locales/cldr/plurals.rb"
|
||||
|
||||
Rails:
|
||||
Enabled: true
|
||||
|
||||
# Disable for rails 4
|
||||
Rails/HttpPositionalArguments:
|
||||
Enabled: false
|
||||
|
|
|
|||
10
.travis.yml
10
.travis.yml
|
|
@ -17,6 +17,16 @@ cache:
|
|||
- app/assets/images
|
||||
- tmp/cache/assets
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libidn11-dev
|
||||
- ghostscript
|
||||
|
||||
services:
|
||||
- postgresql
|
||||
- mysql
|
||||
|
||||
branches:
|
||||
only:
|
||||
- 'master'
|
||||
|
|
|
|||
39
Changelog.md
39
Changelog.md
|
|
@ -1,9 +1,17 @@
|
|||
# 0.8.0.0
|
||||
|
||||
## The chat integration has been removed
|
||||
|
||||
After [a discussion with our community on Discourse](https://discourse.diasporafoundation.org/t/2718), we decided to remove the pieces of XMPP chat integration that were put in place a while ago. When we first added the chat support, we merged the implementation in an unfinished state in the hopes that the open issues will be addressed eventually, and the implementation would end up more polished. This ended up not being the case. After careful consideration and discussion, we did not manage to come up with clear reasons why we need a chat implementation, so we decided that the best way forward would be to remove it.
|
||||
|
||||
Although the chat was never enabled per default and was marked as experimental, some production pods did set up the integration and offered an XMPP service to their users. After this release, diaspora\* will no longer contain a chat applet, so users will no longer be able to use the webchat inside diaspora\*. The existing module that is used to enable users to authenticate to Prosody using their diaspora\* credentials will continue to work, but contact list synchronization might not work without further changes to the Prosody module, which is developed independently from this project.
|
||||
|
||||
## Refactor
|
||||
* Add bootstrapping for using ECMAScript 6 with automatic transpiling for compatibility [#7581](https://github.com/diaspora/diaspora/pull/7581)
|
||||
* Remove backporting of mention syntax [#7788](https://github.com/diaspora/diaspora/pull/7788)
|
||||
* Enable Content-Security-Policy header by default [#7781](https://github.com/diaspora/diaspora/pull/7781)
|
||||
* Do not show getting started after account import [#8036](https://github.com/diaspora/diaspora/pull/8036)
|
||||
* Remove the JSXC/Prosody integration [#8069](https://github.com/diaspora/diaspora/pull/8069)
|
||||
|
||||
## Bug fixes
|
||||
* Fix multiple photos upload progress bar [#7655](https://github.com/diaspora/diaspora/pull/7655)
|
||||
|
|
@ -13,14 +21,43 @@
|
|||
* Add client-site rescaling of post images if they exceed the maximum possible size [#7734](https://github.com/diaspora/diaspora/pull/7734)
|
||||
* Add backend for archive import [#7660](https://github.com/diaspora/diaspora/pull/7660)
|
||||
|
||||
# 0.7.13.0
|
||||
|
||||
## Refactor
|
||||
* Set better example values for unicorn stdout/stderr log settings [#8058](https://github.com/diaspora/diaspora/pull/8058)
|
||||
|
||||
## Bug fixes
|
||||
* Fix error while trying to fetch some sites with invalid OpenGraph data [#8049](https://github.com/diaspora/diaspora/pull/8049)
|
||||
|
||||
## Features
|
||||
* Add cronjob to cleanup pending photos which were never posted [#8041](https://github.com/diaspora/diaspora/pull/8041)
|
||||
|
||||
# 0.7.12.0
|
||||
|
||||
## Refactor
|
||||
* Harmonize markdown titles sizes [#8029](https://github.com/diaspora/diaspora/pull/8029)
|
||||
|
||||
## Bug fixes
|
||||
* Improve handling of mixed case hostnames while fetching OpenGraph data [#8021](https://github.com/diaspora/diaspora/pull/8021)
|
||||
* Fix "remember me" with two factor authentication enabled [#8031](https://github.com/diaspora/diaspora/pull/8031)
|
||||
|
||||
## Features
|
||||
* Add line mentioning diaspora\* on the splash page [#7966](https://github.com/diaspora/diaspora/pull/7966)
|
||||
* Improve communication about signing up on closed pods [#7896](https://github.com/diaspora/diaspora/pull/7896)
|
||||
|
||||
# 0.7.11.0
|
||||
|
||||
## Refactor
|
||||
* Enable paranoid mode for devise [#8003](https://github.com/diaspora/diaspora/pull/8003)
|
||||
* Refactor likes cucumber test [#8002](https://github.com/diaspora/diaspora/pull/8002)
|
||||
|
||||
## Bug fixes
|
||||
* Fix old photos without remote url for export [#8012](https://github.com/diaspora/diaspora/pull/8012)
|
||||
|
||||
## Features
|
||||
* Add a manifest.json file as a first step to make diaspora* a Progressive Web App [#7998](https://github.com/diaspora/diaspora/pull/7998)
|
||||
* 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
|
||||
|
||||
|
|
|
|||
75
Gemfile
75
Gemfile
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "rails", "5.1.6.2"
|
||||
gem "rails", "5.1.7"
|
||||
|
||||
# Legacy Rails features, remove me!
|
||||
# responders (class level)
|
||||
|
|
@ -10,13 +10,13 @@ gem "responders", "2.4.1"
|
|||
|
||||
# Appserver
|
||||
|
||||
gem "unicorn", "5.5.0", require: false
|
||||
gem "unicorn", "5.5.1", require: false
|
||||
gem "unicorn-worker-killer", "0.4.4"
|
||||
|
||||
# Federation
|
||||
|
||||
gem "diaspora_federation-json_schema", "0.2.5"
|
||||
gem "diaspora_federation-rails", "0.2.5"
|
||||
gem "diaspora_federation-json_schema", "0.2.6"
|
||||
gem "diaspora_federation-rails", "0.2.6"
|
||||
|
||||
# API and JSON
|
||||
|
||||
|
|
@ -28,7 +28,9 @@ gem "yajl-ruby", "1.4.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
|
||||
|
||||
|
|
@ -37,7 +39,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.5"
|
||||
gem "sidekiq", "5.2.7"
|
||||
|
||||
# Scheduled processing
|
||||
|
||||
|
|
@ -53,7 +55,7 @@ gem "configurate", "0.3.1"
|
|||
|
||||
# Cross-origin resource sharing
|
||||
|
||||
gem "rack-cors", "1.0.2", require: "rack/cors"
|
||||
gem "rack-cors", "1.0.3", require: "rack/cors"
|
||||
|
||||
# CSS
|
||||
|
||||
|
|
@ -74,12 +76,12 @@ group :postgresql, optional: true do
|
|||
end
|
||||
|
||||
|
||||
gem "activerecord-import", "1.0.1"
|
||||
gem "activerecord-import", "1.0.2"
|
||||
|
||||
# File uploading
|
||||
|
||||
gem "carrierwave", "1.3.1"
|
||||
gem "fog-aws", "3.4.0"
|
||||
gem "fog-aws", "3.5.1"
|
||||
gem "mini_magick", "4.9.3"
|
||||
|
||||
# GUID generation
|
||||
|
|
@ -91,14 +93,14 @@ gem "entypo-rails", "3.0.0"
|
|||
|
||||
# JavaScript
|
||||
|
||||
gem "handlebars_assets", "0.23.3"
|
||||
gem "jquery-rails", "4.3.3"
|
||||
gem "js-routes", "1.4.4"
|
||||
gem "handlebars_assets", "0.23.4"
|
||||
gem "jquery-rails", "4.3.5"
|
||||
gem "js-routes", "1.4.7"
|
||||
gem "js_image_paths", "0.1.1"
|
||||
gem "sprockets-es6", "0.9.2"
|
||||
|
||||
source "https://rails-assets.org" do
|
||||
gem "rails-assets-jquery", "3.3.1" # Should be kept in sync with jquery-rails
|
||||
gem "rails-assets-jquery", "3.4.1" # Should be kept in sync with jquery-rails
|
||||
gem "rails-assets-jquery.ui", "1.11.4"
|
||||
|
||||
gem "rails-assets-highlightjs", "9.12.0"
|
||||
|
|
@ -140,12 +142,12 @@ gem "rails-i18n", "5.1.3"
|
|||
gem "markerb", "1.1.0"
|
||||
|
||||
# Map
|
||||
gem "leaflet-rails", "1.3.1"
|
||||
gem "leaflet-rails", "1.5.1"
|
||||
|
||||
# Parsing
|
||||
|
||||
gem "nokogiri", "1.10.1"
|
||||
gem "open_graph_reader", "0.6.2" # also update User-Agent in features/support/webmock.rb
|
||||
gem "nokogiri", "1.10.3"
|
||||
gem "open_graph_reader", "0.7.0" # also update User-Agent in features/support/webmock.rb
|
||||
gem "redcarpet", "3.4.0"
|
||||
gem "ruby-oembed", "0.12.0"
|
||||
gem "twitter-text", "3.0.0"
|
||||
|
|
@ -156,7 +158,7 @@ gem "string-direction", "1.2.1"
|
|||
|
||||
# Security Headers
|
||||
|
||||
gem "secure_headers", "6.1.0"
|
||||
gem "secure_headers", "6.1.1"
|
||||
|
||||
# Services
|
||||
|
||||
|
|
@ -167,32 +169,28 @@ gem "omniauth-wordpress", "0.2.2"
|
|||
gem "twitter", "6.2.0"
|
||||
|
||||
# OpenID Connect
|
||||
gem "openid_connect", "1.1.6"
|
||||
gem "openid_connect", "1.1.8"
|
||||
|
||||
# Serializers
|
||||
|
||||
gem "active_model_serializers", "0.9.7"
|
||||
|
||||
# XMPP chat dependencies
|
||||
gem "diaspora-prosody-config", "0.0.7"
|
||||
gem "rails-assets-diaspora_jsxc", "0.1.5.develop.7", source: "https://rails-assets.org"
|
||||
|
||||
# Tags
|
||||
|
||||
gem "acts-as-taggable-on", "6.0.0"
|
||||
|
||||
# URIs and HTTP
|
||||
|
||||
gem "addressable", "2.5.2", require: "addressable/uri"
|
||||
gem "addressable", "2.6.0", require: "addressable/uri"
|
||||
gem "faraday", "0.15.4"
|
||||
gem "faraday_middleware", "0.12.2"
|
||||
gem "faraday_middleware", "0.13.1"
|
||||
gem "faraday-cookie_jar", "0.0.6"
|
||||
gem "typhoeus", "1.3.1"
|
||||
|
||||
# Views
|
||||
|
||||
gem "gon", "6.2.1"
|
||||
gem "hamlit", "2.9.2"
|
||||
gem "hamlit", "2.9.3"
|
||||
gem "mobile-fu", "1.4.0"
|
||||
gem "rails-timeago", "2.17.1"
|
||||
gem "will_paginate", "3.1.7"
|
||||
|
|
@ -212,7 +210,7 @@ gem "rubyzip", "1.2.2", require: "zip"
|
|||
# https://github.com/discourse/discourse/pull/238
|
||||
gem "minitest"
|
||||
|
||||
gem "versionist", "1.7.0"
|
||||
gem "versionist", "2.0.0"
|
||||
|
||||
# Windows and OSX have an execjs compatible runtime built-in, Linux users should
|
||||
# install Node.js or use "therubyracer".
|
||||
|
|
@ -251,12 +249,13 @@ group :development do
|
|||
|
||||
# Linters
|
||||
gem "haml_lint", "0.28.0", require: false
|
||||
gem "pronto", "0.9.5", require: false
|
||||
gem "pronto-eslint", "0.9.1", require: false
|
||||
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.66.0", require: false
|
||||
gem "pronto", "0.10.0", require: false
|
||||
gem "pronto-eslint", "0.10.0", require: false
|
||||
gem "pronto-haml", "0.10.0", require: false
|
||||
gem "pronto-rubocop", "0.10.0", require: false
|
||||
gem "pronto-scss", "0.10.0", require: false
|
||||
gem "rubocop", "0.72.0", require: false
|
||||
gem "rubocop-rails", "2.1.0", require: false
|
||||
|
||||
# Preloading environment
|
||||
|
||||
|
|
@ -278,7 +277,7 @@ group :test do
|
|||
# RSpec (unit tests, some integration tests)
|
||||
|
||||
gem "fixture_builder", "0.5.2.rc3"
|
||||
gem "fuubar", "2.3.2"
|
||||
gem "fuubar", "2.4.1"
|
||||
gem "json-schema-rspec", "0.0.4"
|
||||
gem "rspec-json_expectations", "~> 2.1"
|
||||
|
||||
|
|
@ -295,12 +294,12 @@ group :test do
|
|||
gem "factory_girl_rails", "4.8.0"
|
||||
gem "shoulda-matchers", "4.0.1"
|
||||
gem "timecop", "0.9.1"
|
||||
gem "webmock", "3.5.1", require: false
|
||||
gem "webmock", "3.6.0", require: false
|
||||
|
||||
gem "diaspora_federation-test", "0.2.5"
|
||||
gem "diaspora_federation-test", "0.2.6"
|
||||
|
||||
# Coverage
|
||||
gem "coveralls", "0.8.22", require: false
|
||||
gem "coveralls", "0.8.23", require: false
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
|
|
@ -308,12 +307,12 @@ group :development, :test do
|
|||
gem "rspec-rails", "3.8.2"
|
||||
|
||||
# Cucumber (integration tests)
|
||||
gem "cucumber-rails", "1.6.0", require: false
|
||||
gem "cucumber-rails", "1.7.0", require: false
|
||||
|
||||
# Jasmine (client side application tests (JS))
|
||||
gem "jasmine", "3.3.0"
|
||||
gem "jasmine", "3.4.0"
|
||||
gem "jasmine-jquery-rails", "2.0.3"
|
||||
gem "rails-assets-jasmine-ajax", "3.4.0", source: "https://rails-assets.org"
|
||||
gem "rails-assets-jasmine-ajax", "4.0.0", source: "https://rails-assets.org"
|
||||
gem "sinon-rails", "1.15.0"
|
||||
|
||||
# For `assigns` in controller specs
|
||||
|
|
|
|||
367
Gemfile.lock
367
Gemfile.lock
|
|
@ -2,25 +2,25 @@ GEM
|
|||
remote: https://rubygems.org/
|
||||
remote: https://rails-assets.org/
|
||||
specs:
|
||||
actioncable (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
actioncable (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
actionview (= 5.1.6.2)
|
||||
activejob (= 5.1.6.2)
|
||||
actionmailer (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.1.6.2)
|
||||
actionview (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
actionpack (5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
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.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
actionview (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
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.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
activejob (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
globalid (>= 0.3.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)
|
||||
activemodel (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
activerecord (5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
arel (~> 8.0)
|
||||
activerecord-import (1.0.1)
|
||||
activerecord-import (1.0.2)
|
||||
activerecord (>= 3.2)
|
||||
activesupport (5.1.6.2)
|
||||
activesupport (5.1.7)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
|
|
@ -50,7 +50,7 @@ GEM
|
|||
activemodel (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
rack (>= 1.1.0)
|
||||
addressable (2.5.2)
|
||||
addressable (2.6.0)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
aes_key_wrap (1.0.1)
|
||||
arel (8.0.0)
|
||||
|
|
@ -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
|
||||
|
|
@ -67,8 +69,8 @@ GEM
|
|||
babel-transpiler (0.7.0)
|
||||
babel-source (>= 4.0, < 6)
|
||||
execjs (~> 2.0)
|
||||
backports (3.12.0)
|
||||
bcrypt (3.1.12)
|
||||
backports (3.15.0)
|
||||
bcrypt (3.1.13)
|
||||
bindata (2.4.4)
|
||||
bootstrap-sass (3.4.1)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
|
|
@ -132,11 +134,11 @@ GEM
|
|||
concurrent-ruby (1.1.5)
|
||||
configurate (0.3.1)
|
||||
connection_pool (2.2.2)
|
||||
coveralls (0.8.22)
|
||||
coveralls (0.8.23)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov (~> 0.16.1)
|
||||
term-ansicolor (~> 1.3)
|
||||
thor (~> 0.19.4)
|
||||
thor (>= 0.19.4, < 2.0)
|
||||
tins (~> 1.6)
|
||||
crack (0.4.3)
|
||||
safe_yaml (~> 1.0.0)
|
||||
|
|
@ -158,12 +160,12 @@ GEM
|
|||
cucumber-tag_expressions (~> 1.1.0)
|
||||
gherkin (~> 5.0)
|
||||
cucumber-expressions (6.0.1)
|
||||
cucumber-rails (1.6.0)
|
||||
capybara (>= 1.1.2, < 4)
|
||||
cucumber-rails (1.7.0)
|
||||
capybara (>= 2.3.0, < 4)
|
||||
cucumber (>= 3.0.2, < 4)
|
||||
mime-types (>= 1.17, < 4)
|
||||
nokogiri (~> 1.8)
|
||||
railties (>= 4, < 6)
|
||||
railties (>= 4.2, < 7)
|
||||
cucumber-tag_expressions (1.1.1)
|
||||
cucumber-wire (0.0.1)
|
||||
database_cleaner (1.7.0)
|
||||
|
|
@ -173,28 +175,34 @@ 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)
|
||||
diaspora-prosody-config (0.0.7)
|
||||
diaspora_federation (0.2.5)
|
||||
diaspora_federation (0.2.6)
|
||||
faraday (>= 0.9.0, < 0.16.0)
|
||||
faraday_middleware (>= 0.10.0, < 0.13.0)
|
||||
faraday_middleware (>= 0.10.0, < 0.14.0)
|
||||
nokogiri (~> 1.6, >= 1.6.8)
|
||||
typhoeus (~> 1.0)
|
||||
valid (~> 1.0)
|
||||
diaspora_federation-json_schema (0.2.5)
|
||||
diaspora_federation-rails (0.2.5)
|
||||
diaspora_federation-json_schema (0.2.6)
|
||||
diaspora_federation-rails (0.2.6)
|
||||
actionpack (>= 4.2, < 6)
|
||||
diaspora_federation (= 0.2.5)
|
||||
diaspora_federation-test (0.2.5)
|
||||
diaspora_federation (= 0.2.5)
|
||||
diaspora_federation (= 0.2.6)
|
||||
diaspora_federation-test (0.2.6)
|
||||
diaspora_federation (= 0.2.6)
|
||||
fabrication (~> 2.16)
|
||||
uuid (~> 2.3, >= 2.3.8)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.1)
|
||||
docile (1.3.2)
|
||||
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)
|
||||
|
|
@ -203,11 +211,11 @@ GEM
|
|||
execjs
|
||||
multi_json (>= 1.3)
|
||||
rake
|
||||
et-orbi (1.1.7)
|
||||
et-orbi (1.2.1)
|
||||
tzinfo
|
||||
ethon (0.12.0)
|
||||
ffi (>= 1.3.0)
|
||||
excon (0.62.0)
|
||||
excon (0.64.0)
|
||||
execjs (2.7.0)
|
||||
eye (0.10.0)
|
||||
celluloid (~> 0.17.3)
|
||||
|
|
@ -215,7 +223,7 @@ GEM
|
|||
kostya-sigar (~> 2.0.0)
|
||||
state_machines
|
||||
thor
|
||||
fabrication (2.20.1)
|
||||
fabrication (2.20.2)
|
||||
factory_girl (4.8.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.8.0)
|
||||
|
|
@ -226,14 +234,14 @@ GEM
|
|||
faraday-cookie_jar (0.0.6)
|
||||
faraday (>= 0.7.4)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday_middleware (0.12.2)
|
||||
faraday_middleware (0.13.1)
|
||||
faraday (>= 0.7.4, < 1.0)
|
||||
ffi (1.10.0)
|
||||
ffi (1.11.1)
|
||||
fixture_builder (0.5.2.rc3)
|
||||
activerecord (>= 2)
|
||||
activesupport (>= 2)
|
||||
hashdiff
|
||||
fog-aws (3.4.0)
|
||||
fog-aws (3.5.1)
|
||||
fog-core (~> 2.1)
|
||||
fog-json (~> 1.1)
|
||||
fog-xml (~> 0.1)
|
||||
|
|
@ -250,15 +258,15 @@ GEM
|
|||
fog-core
|
||||
nokogiri (>= 1.5.11, < 2.0.0)
|
||||
formatador (0.2.5)
|
||||
fugit (1.1.8)
|
||||
et-orbi (~> 1.1, >= 1.1.7)
|
||||
fugit (1.2.2)
|
||||
et-orbi (~> 1.1, >= 1.1.8)
|
||||
raabro (~> 1.1)
|
||||
fuubar (2.3.2)
|
||||
fuubar (2.4.1)
|
||||
rspec-core (~> 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
get_process_mem (0.2.3)
|
||||
gherkin (5.1.0)
|
||||
gitlab (4.10.0)
|
||||
gitlab (4.11.0)
|
||||
httparty (~> 0.14, >= 0.14.0)
|
||||
terminal-table (~> 1.5, >= 1.5.1)
|
||||
globalid (0.4.2)
|
||||
|
|
@ -293,15 +301,15 @@ GEM
|
|||
rake (>= 10, < 13)
|
||||
rubocop (>= 0.50.0)
|
||||
sysexits (~> 1.1)
|
||||
hamlit (2.9.2)
|
||||
hamlit (2.9.3)
|
||||
temple (>= 0.8.0)
|
||||
thor
|
||||
tilt
|
||||
handlebars_assets (0.23.3)
|
||||
handlebars_assets (0.23.4)
|
||||
execjs (~> 2.0)
|
||||
sprockets (>= 2.0.0)
|
||||
tilt (>= 1.2)
|
||||
hashdiff (0.3.8)
|
||||
hashdiff (0.4.0)
|
||||
hashie (3.6.0)
|
||||
http (3.3.0)
|
||||
addressable (~> 2.3)
|
||||
|
|
@ -313,7 +321,7 @@ GEM
|
|||
http-form_data (2.1.1)
|
||||
http_accept_language (2.1.1)
|
||||
http_parser.rb (0.6.0)
|
||||
httparty (0.16.4)
|
||||
httparty (0.17.0)
|
||||
mime-types (~> 3.0)
|
||||
multi_xml (>= 0.5.2)
|
||||
httpclient (2.8.3)
|
||||
|
|
@ -327,26 +335,26 @@ GEM
|
|||
railties (>= 3.0.0)
|
||||
idn-ruby (0.1.0)
|
||||
ipaddress (0.8.3)
|
||||
jaro_winkler (1.5.2)
|
||||
jasmine (3.3.0)
|
||||
jasmine-core (~> 3.3.0)
|
||||
jaro_winkler (1.5.3)
|
||||
jasmine (3.4.0)
|
||||
jasmine-core (~> 3.4.0)
|
||||
phantomjs
|
||||
rack (>= 1.2.1)
|
||||
rake
|
||||
jasmine-core (3.3.0)
|
||||
jasmine-core (3.4.0)
|
||||
jasmine-jquery-rails (2.0.3)
|
||||
jquery-rails (4.3.3)
|
||||
jquery-rails (4.3.5)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
js-routes (1.4.4)
|
||||
railties (>= 3.2)
|
||||
js-routes (1.4.7)
|
||||
railties (>= 4)
|
||||
sprockets-rails
|
||||
js_image_paths (0.1.1)
|
||||
rails (>= 4.0, < 6.0)
|
||||
sprockets (>= 3.0.0)
|
||||
json (2.2.0)
|
||||
json-jwt (1.10.0)
|
||||
json-jwt (1.10.2)
|
||||
activesupport (>= 4.2)
|
||||
aes_key_wrap
|
||||
bindata
|
||||
|
|
@ -355,13 +363,13 @@ GEM
|
|||
json-schema-rspec (0.0.4)
|
||||
json-schema (~> 2.5)
|
||||
rspec
|
||||
jsonpath (1.0.1)
|
||||
jsonpath (1.0.4)
|
||||
multi_json
|
||||
to_regexp (~> 0.2.1)
|
||||
jwt (2.1.0)
|
||||
jwt (2.2.1)
|
||||
kgio (2.11.2)
|
||||
kostya-sigar (2.0.6)
|
||||
leaflet-rails (1.3.1)
|
||||
leaflet-rails (1.5.1)
|
||||
rails (>= 4.2.0)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
|
|
@ -377,8 +385,8 @@ GEM
|
|||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.13)
|
||||
macaddr (1.7.1)
|
||||
systemu (~> 2.6.2)
|
||||
macaddr (1.7.2)
|
||||
systemu (~> 2.6.5)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
markdown-it-html5-embed (1.0.0)
|
||||
|
|
@ -388,7 +396,7 @@ GEM
|
|||
method_source (0.9.2)
|
||||
mime-types (3.2.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2018.0812)
|
||||
mime-types-data (3.2019.0331)
|
||||
mini_magick (4.9.3)
|
||||
mini_mime (1.0.1)
|
||||
mini_portile2 (2.4.0)
|
||||
|
|
@ -399,12 +407,12 @@ GEM
|
|||
multi_json (1.13.1)
|
||||
multi_test (0.1.2)
|
||||
multi_xml (0.6.0)
|
||||
multipart-post (2.0.0)
|
||||
multipart-post (2.1.1)
|
||||
mysql2 (0.5.2)
|
||||
naught (1.1.0)
|
||||
nenv (0.3.0)
|
||||
nio4r (2.3.1)
|
||||
nokogiri (1.10.1)
|
||||
nokogiri (1.10.3)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
notiffany (0.1.1)
|
||||
nenv (~> 0.1)
|
||||
|
|
@ -416,7 +424,7 @@ GEM
|
|||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
octokit (4.13.0)
|
||||
octokit (4.14.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
omniauth (1.9.0)
|
||||
hashie (>= 3.4.6, < 3.7.0)
|
||||
|
|
@ -435,10 +443,10 @@ GEM
|
|||
rack
|
||||
omniauth-wordpress (0.2.2)
|
||||
omniauth-oauth2 (>= 1.1.0)
|
||||
open_graph_reader (0.6.2)
|
||||
open_graph_reader (0.7.0)
|
||||
faraday (>= 0.9.0)
|
||||
nokogiri (~> 1.6)
|
||||
openid_connect (1.1.6)
|
||||
openid_connect (1.1.8)
|
||||
activemodel
|
||||
attr_required (>= 1.0.0)
|
||||
json-jwt (>= 1.5.0)
|
||||
|
|
@ -449,8 +457,8 @@ GEM
|
|||
validate_url
|
||||
webfinger (>= 1.0.1)
|
||||
orm_adapter (0.5.0)
|
||||
parallel (1.14.0)
|
||||
parser (2.6.2.0)
|
||||
parallel (1.17.0)
|
||||
parser (2.6.3.0)
|
||||
ast (~> 2.4.0)
|
||||
pg (1.1.4)
|
||||
phantomjs (2.1.1.0)
|
||||
|
|
@ -458,24 +466,24 @@ GEM
|
|||
capybara (>= 2.1, < 4)
|
||||
cliver (~> 0.3.1)
|
||||
websocket-driver (>= 0.2.0)
|
||||
pronto (0.9.5)
|
||||
pronto (0.10.0)
|
||||
gitlab (~> 4.0, >= 4.0.0)
|
||||
httparty (>= 0.13.7)
|
||||
octokit (~> 4.7, >= 4.7.0)
|
||||
rainbow (~> 2.1)
|
||||
rainbow (>= 2.2, < 4.0)
|
||||
rugged (~> 0.24, >= 0.23.0)
|
||||
thor (~> 0.19.0)
|
||||
pronto-eslint (0.9.1)
|
||||
thor (~> 0.20.0)
|
||||
pronto-eslint (0.10.0)
|
||||
eslintrb (~> 2.0, >= 2.0.0)
|
||||
pronto (~> 0.9.0)
|
||||
pronto-haml (0.9.0)
|
||||
pronto (~> 0.10.0)
|
||||
pronto-haml (0.10.0)
|
||||
haml_lint (~> 0.23)
|
||||
pronto (~> 0.9.0)
|
||||
pronto-rubocop (0.9.1)
|
||||
pronto (~> 0.9.0)
|
||||
pronto (~> 0.10.0)
|
||||
pronto-rubocop (0.10.0)
|
||||
pronto (~> 0.10.0)
|
||||
rubocop (~> 0.50, >= 0.49.1)
|
||||
pronto-scss (0.9.1)
|
||||
pronto (~> 0.9.0)
|
||||
pronto-scss (0.10.0)
|
||||
pronto (~> 0.10.0)
|
||||
scss_lint (~> 0.43, >= 0.43.0)
|
||||
pry (0.12.2)
|
||||
coderay (~> 1.1.0)
|
||||
|
|
@ -483,17 +491,16 @@ GEM
|
|||
pry-byebug (3.7.0)
|
||||
byebug (~> 11.0)
|
||||
pry (~> 0.10)
|
||||
psych (3.1.0)
|
||||
public_suffix (3.0.3)
|
||||
public_suffix (3.1.1)
|
||||
raabro (1.1.6)
|
||||
rack (2.0.6)
|
||||
rack-cors (1.0.2)
|
||||
rack (2.0.7)
|
||||
rack-cors (1.0.3)
|
||||
rack-google-analytics (1.2.0)
|
||||
actionpack
|
||||
activesupport
|
||||
rack-mobile-detect (0.4.0)
|
||||
rack
|
||||
rack-oauth2 (1.9.3)
|
||||
rack-oauth2 (1.10.0)
|
||||
activesupport
|
||||
attr_required
|
||||
httpclient
|
||||
|
|
@ -507,54 +514,41 @@ GEM
|
|||
rack
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
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)
|
||||
rails (5.1.7)
|
||||
actioncable (= 5.1.7)
|
||||
actionmailer (= 5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activerecord (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.1.6.2)
|
||||
railties (= 5.1.7)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-assets-autosize (4.0.2)
|
||||
rails-assets-backbone (1.3.3)
|
||||
rails-assets-underscore (>= 1.8.3)
|
||||
rails-assets-blueimp-gallery (2.33.0)
|
||||
rails-assets-bootstrap (3.3.7)
|
||||
rails-assets-bootstrap (3.4.1)
|
||||
rails-assets-jquery (>= 1.9.1, < 4)
|
||||
rails-assets-bootstrap-markdown (2.10.0)
|
||||
rails-assets-bootstrap (~> 3)
|
||||
rails-assets-corejs-typeahead (1.2.1)
|
||||
rails-assets-jquery (>= 1.11)
|
||||
rails-assets-cropperjs (1.4.3)
|
||||
rails-assets-diaspora_jsxc (0.1.5.develop.7)
|
||||
rails-assets-emojione (~> 2.0.1)
|
||||
rails-assets-favico.js (>= 0.3.10, < 0.4)
|
||||
rails-assets-jquery-colorbox (~> 1.6.3)
|
||||
rails-assets-jquery-fullscreen-plugin (~> 0.5.0)
|
||||
rails-assets-jquery.slimscroll (~> 1.3.6)
|
||||
rails-assets-jquery.ui (~> 1.11.4)
|
||||
rails-assets-emojione (2.0.1)
|
||||
rails-assets-favico.js (0.3.10)
|
||||
rails-assets-fine-uploader (5.13.0)
|
||||
rails-assets-highlightjs (9.12.0)
|
||||
rails-assets-jasmine (3.3.0)
|
||||
rails-assets-jasmine-ajax (3.4.0)
|
||||
rails-assets-jasmine (3.4.0)
|
||||
rails-assets-jasmine-ajax (4.0.0)
|
||||
rails-assets-jasmine (~> 3)
|
||||
rails-assets-jquery (3.3.1)
|
||||
rails-assets-jquery-colorbox (1.6.4)
|
||||
rails-assets-jquery (>= 1.3.2)
|
||||
rails-assets-jquery-fullscreen-plugin (0.5.0)
|
||||
rails-assets-jquery (3.4.1)
|
||||
rails-assets-jquery-placeholder (2.3.1)
|
||||
rails-assets-jquery (>= 1.6)
|
||||
rails-assets-jquery-textchange (0.2.3)
|
||||
rails-assets-jquery
|
||||
rails-assets-jquery.are-you-sure (1.9.0)
|
||||
rails-assets-jquery (>= 1.4.2)
|
||||
rails-assets-jquery.slimscroll (1.3.8)
|
||||
rails-assets-jquery.ui (1.11.4)
|
||||
rails-assets-jquery (>= 1.6)
|
||||
rails-assets-markdown-it--markdown-it-for-inline (0.1.1)
|
||||
|
|
@ -582,14 +576,13 @@ GEM
|
|||
rails-timeago (2.17.1)
|
||||
actionpack (>= 3.1)
|
||||
activesupport (>= 3.1)
|
||||
railties (5.1.6.2)
|
||||
actionpack (= 5.1.6.2)
|
||||
activesupport (= 5.1.6.2)
|
||||
railties (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rainbow (2.2.2)
|
||||
rake
|
||||
rainbow (3.0.0)
|
||||
raindrops (0.19.0)
|
||||
rake (12.3.2)
|
||||
rb-fsevent (0.10.3)
|
||||
|
|
@ -597,23 +590,26 @@ GEM
|
|||
ffi (~> 1.0)
|
||||
redcarpet (3.4.0)
|
||||
redis (3.3.5)
|
||||
regexp_parser (1.3.0)
|
||||
regexp_parser (1.5.1)
|
||||
request_store (1.4.1)
|
||||
rack (>= 1.4)
|
||||
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)
|
||||
rspec-mocks (~> 3.8.0)
|
||||
rspec-core (3.8.0)
|
||||
rspec-core (3.8.2)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-expectations (3.8.2)
|
||||
rspec-expectations (3.8.4)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-json_expectations (2.1.0)
|
||||
rspec-mocks (3.8.0)
|
||||
rspec-json_expectations (2.2.0)
|
||||
rspec-mocks (3.8.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-rails (3.8.2)
|
||||
|
|
@ -624,20 +620,22 @@ GEM
|
|||
rspec-expectations (~> 3.8.0)
|
||||
rspec-mocks (~> 3.8.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-support (3.8.0)
|
||||
rubocop (0.66.0)
|
||||
rspec-support (3.8.2)
|
||||
rubocop (0.72.0)
|
||||
jaro_winkler (~> 1.5.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.5, != 2.5.1.1)
|
||||
psych (>= 3.1.0)
|
||||
parser (>= 2.6)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 1.6)
|
||||
unicode-display_width (>= 1.4.0, < 1.7)
|
||||
rubocop-rails (2.1.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 0.72.0)
|
||||
ruby-oembed (0.12.0)
|
||||
ruby-progressbar (1.10.0)
|
||||
ruby-progressbar (1.10.1)
|
||||
ruby_dep (1.5.0)
|
||||
rubyzip (1.2.2)
|
||||
rugged (0.28.1)
|
||||
rugged (0.28.2)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-rails (5.0.7)
|
||||
|
|
@ -649,17 +647,17 @@ GEM
|
|||
sassc (2.0.1)
|
||||
ffi (~> 1.9)
|
||||
rake
|
||||
sawyer (0.8.1)
|
||||
addressable (>= 2.3.5, < 2.6)
|
||||
faraday (~> 0.8, < 1.0)
|
||||
sawyer (0.8.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (> 0.8, < 2.0)
|
||||
scss_lint (0.55.0)
|
||||
rake (>= 0.9, < 13)
|
||||
sass (~> 3.4.20)
|
||||
secure_headers (6.1.0)
|
||||
secure_headers (6.1.1)
|
||||
shellany (0.0.1)
|
||||
shoulda-matchers (4.0.1)
|
||||
activesupport (>= 4.2.0)
|
||||
sidekiq (5.2.5)
|
||||
sidekiq (5.2.7)
|
||||
connection_pool (~> 2.2, >= 2.2.2)
|
||||
rack (>= 1.5.0)
|
||||
rack-protection (>= 1.5.0)
|
||||
|
|
@ -707,12 +705,12 @@ GEM
|
|||
tins (~> 1.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thor (0.19.4)
|
||||
thor (0.20.3)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.9)
|
||||
timecop (0.9.1)
|
||||
timers (4.3.0)
|
||||
tins (1.20.2)
|
||||
tins (1.20.3)
|
||||
to_regexp (0.2.1)
|
||||
turbo_dev_assets (0.0.2)
|
||||
twitter (6.2.0)
|
||||
|
|
@ -737,9 +735,9 @@ GEM
|
|||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.5)
|
||||
unicode-display_width (1.5.0)
|
||||
unicorn (5.5.0)
|
||||
unf_ext (0.0.7.6)
|
||||
unicode-display_width (1.6.0)
|
||||
unicorn (5.5.1)
|
||||
kgio (~> 2.6)
|
||||
raindrops (~> 0.7)
|
||||
unicorn-worker-killer (0.4.4)
|
||||
|
|
@ -751,10 +749,10 @@ GEM
|
|||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
validate_url (1.0.6)
|
||||
validate_url (1.0.8)
|
||||
activemodel (>= 3.0.0)
|
||||
public_suffix
|
||||
versionist (1.7.0)
|
||||
versionist (2.0.0)
|
||||
activesupport (>= 3)
|
||||
railties (>= 3)
|
||||
yard (~> 0.9.11)
|
||||
|
|
@ -763,28 +761,28 @@ GEM
|
|||
webfinger (1.1.0)
|
||||
activesupport
|
||||
httpclient (>= 2.4)
|
||||
webmock (3.5.1)
|
||||
webmock (3.6.0)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.3)
|
||||
websocket-extensions (0.1.4)
|
||||
will_paginate (3.1.7)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
yajl-ruby (1.4.1)
|
||||
yard (0.9.18)
|
||||
yard (0.9.20)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
active_model_serializers (= 0.9.7)
|
||||
activerecord-import (= 1.0.1)
|
||||
activerecord-import (= 1.0.2)
|
||||
acts-as-taggable-on (= 6.0.0)
|
||||
acts_as_api (= 1.0.1)
|
||||
addressable (= 2.5.2)
|
||||
addressable (= 2.6.0)
|
||||
asset_sync (= 2.7.0)
|
||||
autoprefixer-rails (= 8.6.5)
|
||||
bootstrap-sass (= 3.4.1)
|
||||
|
|
@ -793,43 +791,43 @@ DEPENDENCIES
|
|||
carrierwave (= 1.3.1)
|
||||
compass-rails (= 3.1.0)
|
||||
configurate (= 0.3.1)
|
||||
coveralls (= 0.8.22)
|
||||
coveralls (= 0.8.23)
|
||||
cucumber-api-steps (= 0.14)
|
||||
cucumber-rails (= 1.6.0)
|
||||
cucumber-rails (= 1.7.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.5)
|
||||
diaspora_federation-rails (= 0.2.5)
|
||||
diaspora_federation-test (= 0.2.5)
|
||||
diaspora_federation-json_schema (= 0.2.6)
|
||||
diaspora_federation-rails (= 0.2.6)
|
||||
diaspora_federation-test (= 0.2.6)
|
||||
entypo-rails (= 3.0.0)
|
||||
eye (= 0.10.0)
|
||||
factory_girl_rails (= 4.8.0)
|
||||
faraday (= 0.15.4)
|
||||
faraday-cookie_jar (= 0.0.6)
|
||||
faraday_middleware (= 0.12.2)
|
||||
faraday_middleware (= 0.13.1)
|
||||
fixture_builder (= 0.5.2.rc3)
|
||||
fog-aws (= 3.4.0)
|
||||
fuubar (= 2.3.2)
|
||||
fog-aws (= 3.5.1)
|
||||
fuubar (= 2.4.1)
|
||||
gon (= 6.2.1)
|
||||
guard (= 2.15.0)
|
||||
guard-rspec (= 4.7.3)
|
||||
guard-rubocop (= 1.3.0)
|
||||
haml_lint (= 0.28.0)
|
||||
hamlit (= 2.9.2)
|
||||
handlebars_assets (= 0.23.3)
|
||||
hamlit (= 2.9.3)
|
||||
handlebars_assets (= 0.23.4)
|
||||
http_accept_language (= 2.1.1)
|
||||
i18n-inflector-rails (= 1.0.7)
|
||||
jasmine (= 3.3.0)
|
||||
jasmine (= 3.4.0)
|
||||
jasmine-jquery-rails (= 2.0.3)
|
||||
jquery-rails (= 4.3.3)
|
||||
js-routes (= 1.4.4)
|
||||
jquery-rails (= 4.3.5)
|
||||
js-routes (= 1.4.7)
|
||||
js_image_paths (= 0.1.1)
|
||||
json (= 2.2.0)
|
||||
json-schema (= 2.8.1)
|
||||
json-schema-rspec (= 0.0.4)
|
||||
leaflet-rails (= 1.3.1)
|
||||
leaflet-rails (= 1.5.1)
|
||||
logging-rails (= 0.6.0)
|
||||
markdown-it-html5-embed (= 1.0.0)
|
||||
markerb (= 1.1.0)
|
||||
|
|
@ -837,39 +835,38 @@ DEPENDENCIES
|
|||
minitest
|
||||
mobile-fu (= 1.4.0)
|
||||
mysql2 (= 0.5.2)
|
||||
nokogiri (= 1.10.1)
|
||||
nokogiri (= 1.10.3)
|
||||
omniauth (= 1.9.0)
|
||||
omniauth-tumblr (= 1.2)
|
||||
omniauth-twitter (= 1.4.0)
|
||||
omniauth-wordpress (= 0.2.2)
|
||||
open_graph_reader (= 0.6.2)
|
||||
openid_connect (= 1.1.6)
|
||||
open_graph_reader (= 0.7.0)
|
||||
openid_connect (= 1.1.8)
|
||||
pg (= 1.1.4)
|
||||
poltergeist (= 1.18.1)
|
||||
pronto (= 0.9.5)
|
||||
pronto-eslint (= 0.9.1)
|
||||
pronto-haml (= 0.9.0)
|
||||
pronto-rubocop (= 0.9.1)
|
||||
pronto-scss (= 0.9.1)
|
||||
pronto (= 0.10.0)
|
||||
pronto-eslint (= 0.10.0)
|
||||
pronto-haml (= 0.10.0)
|
||||
pronto-rubocop (= 0.10.0)
|
||||
pronto-scss (= 0.10.0)
|
||||
pry
|
||||
pry-byebug
|
||||
rack-cors (= 1.0.2)
|
||||
rack-cors (= 1.0.3)
|
||||
rack-google-analytics (= 1.2.0)
|
||||
rack-piwik (= 0.3.0)
|
||||
rack-rewrite (= 1.5.1)
|
||||
rack-ssl (= 1.4.1)
|
||||
rails (= 5.1.6.2)
|
||||
rails (= 5.1.7)
|
||||
rails-assets-autosize (= 4.0.2)!
|
||||
rails-assets-backbone (= 1.3.3)!
|
||||
rails-assets-blueimp-gallery (= 2.33.0)!
|
||||
rails-assets-bootstrap-markdown (= 2.10.0)!
|
||||
rails-assets-corejs-typeahead (= 1.2.1)!
|
||||
rails-assets-cropperjs (= 1.4.3)!
|
||||
rails-assets-diaspora_jsxc (= 0.1.5.develop.7)!
|
||||
rails-assets-fine-uploader (= 5.13.0)!
|
||||
rails-assets-highlightjs (= 9.12.0)!
|
||||
rails-assets-jasmine-ajax (= 3.4.0)!
|
||||
rails-assets-jquery (= 3.3.1)!
|
||||
rails-assets-jasmine-ajax (= 4.0.0)!
|
||||
rails-assets-jquery (= 3.4.1)!
|
||||
rails-assets-jquery-placeholder (= 2.3.1)!
|
||||
rails-assets-jquery-textchange (= 0.2.3)!
|
||||
rails-assets-jquery.are-you-sure (= 1.9.0)!
|
||||
|
|
@ -891,15 +888,17 @@ 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)
|
||||
rubocop (= 0.72.0)
|
||||
rubocop-rails (= 2.1.0)
|
||||
ruby-oembed (= 0.12.0)
|
||||
rubyzip (= 1.2.2)
|
||||
sass-rails (= 5.0.7)
|
||||
secure_headers (= 6.1.0)
|
||||
secure_headers (= 6.1.1)
|
||||
shoulda-matchers (= 4.0.1)
|
||||
sidekiq (= 5.2.5)
|
||||
sidekiq (= 5.2.7)
|
||||
sidekiq-cron (= 1.1.0)
|
||||
simple_captcha2 (= 0.4.3)
|
||||
simplecov (= 0.16.1)
|
||||
|
|
@ -916,11 +915,11 @@ DEPENDENCIES
|
|||
twitter-text (= 3.0.0)
|
||||
typhoeus (= 1.3.1)
|
||||
uglifier (= 4.1.20)
|
||||
unicorn (= 5.5.0)
|
||||
unicorn (= 5.5.1)
|
||||
unicorn-worker-killer (= 0.4.4)
|
||||
uuid (= 2.3.9)
|
||||
versionist (= 1.7.0)
|
||||
webmock (= 3.5.1)
|
||||
versionist (= 2.0.0)
|
||||
webmock (= 3.6.0)
|
||||
will_paginate (= 3.1.7)
|
||||
yajl-ruby (= 1.4.1)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
//= link jquery3.js
|
||||
//= link jquery_ujs.js
|
||||
//= link main.js
|
||||
//= link jsxc.js
|
||||
//= link bookmarklet.js
|
||||
//= link mobile/bookmarklet.js
|
||||
//= link mobile/mobile.js
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
el: "#contacts_container",
|
||||
|
||||
events: {
|
||||
"click #chat_privilege_toggle" : "toggleChatPrivilege",
|
||||
"click #change_aspect_name" : "showAspectNameForm",
|
||||
"click .conversation_button": "showMessageModal",
|
||||
"click .invitations-button": "showInvitationsModal"
|
||||
},
|
||||
|
||||
initialize: function(opts) {
|
||||
this.chatToggle = $("#chat_privilege_toggle i");
|
||||
this.stream = opts.stream;
|
||||
this.stream.render();
|
||||
$("#people-stream.contacts .header i").tooltip({"placement": "bottom"});
|
||||
|
|
@ -27,22 +25,6 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
this.setupAspectSorting();
|
||||
},
|
||||
|
||||
toggleChatPrivilege: function() {
|
||||
if (this.chatToggle.hasClass("enabled")) {
|
||||
this.chatToggle.tooltip("destroy")
|
||||
.removeClass("enabled")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_chat_is_not_enabled"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
} else {
|
||||
this.chatToggle.tooltip("destroy")
|
||||
.addClass("enabled")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_chat_is_enabled"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
}
|
||||
},
|
||||
|
||||
showAspectNameForm: function() {
|
||||
$(".header > h3").hide();
|
||||
var aspectName = $.trim($(".header h3 #aspect_name").text());
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ app.views.Help = app.views.StaticContentView.extend({
|
|||
"click .faq-link-sharing": "sharing",
|
||||
"click .faq-link-posts-and-posting": "postsAndPosting",
|
||||
"click .faq-link-tags": "tags",
|
||||
"click .faq-link-keyboard-shortcuts": "keyboardShortcuts",
|
||||
"click .faq-link-chat": "chat"
|
||||
"click .faq-link-keyboard-shortcuts": "keyboardShortcuts"
|
||||
},
|
||||
|
||||
initialize : function() {
|
||||
|
|
@ -39,31 +38,22 @@ app.views.Help = app.views.StaticContentView.extend({
|
|||
}
|
||||
};
|
||||
|
||||
this.CHAT_SUBS = {
|
||||
add_contact_roster_a: {
|
||||
toggle_privilege: this.getChatIcons(),
|
||||
contacts_page: this.linkHtml(Routes.contacts(), Diaspora.I18n.t("chat.contacts_page"))
|
||||
}
|
||||
};
|
||||
|
||||
this.data = {
|
||||
title_header: Diaspora.I18n.t( 'title_header' ),
|
||||
title_getting_help: Diaspora.I18n.t( 'getting_help.title' ),
|
||||
title_account_and_data_management: Diaspora.I18n.t( 'account_and_data_management.title' ),
|
||||
title_aspects: Diaspora.I18n.t( 'aspects.title' ),
|
||||
title_mentions: Diaspora.I18n.t( 'mentions.title' ),
|
||||
title_pods: Diaspora.I18n.t( 'pods.title' ),
|
||||
title_posts_and_posting: Diaspora.I18n.t( 'posts_and_posting.title' ),
|
||||
title_private_posts: Diaspora.I18n.t( 'private_posts.title' ),
|
||||
title_public_posts: Diaspora.I18n.t( 'public_posts.title' ),
|
||||
title_resharing_posts: Diaspora.I18n.t( 'resharing_posts.title' ),
|
||||
title_header: Diaspora.I18n.t("title_header"),
|
||||
title_getting_help: Diaspora.I18n.t("getting_help.title"),
|
||||
title_account_and_data_management: Diaspora.I18n.t("account_and_data_management.title"),
|
||||
title_aspects: Diaspora.I18n.t("aspects.title"),
|
||||
title_mentions: Diaspora.I18n.t("mentions.title"),
|
||||
title_pods: Diaspora.I18n.t("pods.title"),
|
||||
title_posts_and_posting: Diaspora.I18n.t("posts_and_posting.title"),
|
||||
title_private_posts: Diaspora.I18n.t("private_posts.title"),
|
||||
title_public_posts: Diaspora.I18n.t("public_posts.title"),
|
||||
title_resharing_posts: Diaspora.I18n.t("resharing_posts.title"),
|
||||
title_profile: Diaspora.I18n.t("profile.title"),
|
||||
title_sharing: Diaspora.I18n.t( 'sharing.title' ),
|
||||
title_tags: Diaspora.I18n.t( 'tags.title' ),
|
||||
title_keyboard_shortcuts: Diaspora.I18n.t( 'keyboard_shortcuts.title' ),
|
||||
title_miscellaneous: Diaspora.I18n.t( 'miscellaneous.title' ),
|
||||
title_chat: Diaspora.I18n.t( 'chat.title' ),
|
||||
chat_enabled: this.chatEnabled()
|
||||
title_sharing: Diaspora.I18n.t("sharing.title"),
|
||||
title_tags: Diaspora.I18n.t("tags.title"),
|
||||
title_keyboard_shortcuts: Diaspora.I18n.t("keyboard_shortcuts.title"),
|
||||
title_miscellaneous: Diaspora.I18n.t("miscellaneous.title")
|
||||
};
|
||||
|
||||
return this;
|
||||
|
|
@ -199,27 +189,8 @@ app.views.Help = app.views.StaticContentView.extend({
|
|||
e.preventDefault();
|
||||
},
|
||||
|
||||
chat: function(e){
|
||||
this.renderStaticSection("chat", "faq_chat", this.CHAT_SUBS);
|
||||
this.menuClicked(e);
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
linkHtml: function(url, text) {
|
||||
return "<a href=\"" + url + "\" target=\"_blank\">" + text + "</a>";
|
||||
},
|
||||
|
||||
chatEnabled: function(){
|
||||
return gon.appConfig.chat.enabled;
|
||||
},
|
||||
|
||||
getChatIcons: function(){
|
||||
return "<div class=\"help-chat-icons\">" +
|
||||
" <i class=\"entypo-lock-open\"></i>" +
|
||||
" <i class=\"entypo-chat\"></i>" +
|
||||
" <i class=\"entypo-trash\"></i>" +
|
||||
"</div>";
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||
|
|
@ -1,50 +0,0 @@
|
|||
//= require emojione
|
||||
//= require favico.js/favico
|
||||
|
||||
//= require jquery.ui/ui/resizable
|
||||
//= require jquery.ui/ui/draggable
|
||||
//= require jquery.slimscroll/jquery.slimscroll
|
||||
//= require jquery-colorbox
|
||||
//= require jquery-fullscreen-plugin
|
||||
|
||||
//= require diaspora_jsxc
|
||||
|
||||
// initialize jsxc xmpp client
|
||||
$(document).ready(function() {
|
||||
if (app.currentUser.authenticated()) {
|
||||
$.post("/user/auth_token", null, function(data) {
|
||||
if (jsxc && data['token']) {
|
||||
var jid = app.currentUser.get('diaspora_id');
|
||||
jsxc.init({
|
||||
root: '/assets/diaspora_jsxc',
|
||||
rosterAppend: 'body',
|
||||
otr: {
|
||||
debug: true,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
onlineHelp: "/help/chat",
|
||||
priority: {
|
||||
online: 1,
|
||||
chat: 1
|
||||
},
|
||||
displayRosterMinimized: function() {
|
||||
return false;
|
||||
},
|
||||
xmpp: {
|
||||
url: $('script#jsxc').data('endpoint'),
|
||||
username: jid.replace(/@.*?$/g, ''),
|
||||
domain: jid.replace(/^.*?@/g, ''),
|
||||
jid: jid,
|
||||
password: data.token,
|
||||
resource: 'diaspora-jsxc',
|
||||
overwrite: true,
|
||||
onlogin: true
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.error('No token found! Authenticated!?');
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
});
|
||||
|
|
@ -84,8 +84,6 @@
|
|||
@import 'stream';
|
||||
@import 'stream_element';
|
||||
@import 'comments';
|
||||
@import 'diaspora_jsxc';
|
||||
@import 'chat';
|
||||
@import 'markdown-content';
|
||||
@import 'oembed';
|
||||
@import 'media-embed';
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
body > .container-fluid.chat-roster-shown {
|
||||
padding-right: 224px;
|
||||
#back-to-top { right: 244px; }
|
||||
}
|
||||
body > .container-fluid.chat-roster-hidden {
|
||||
#back-to-top { right: 54px; }
|
||||
}
|
||||
|
||||
// This element is instanciated by JSXC. Does not have to follow naming conventions
|
||||
// scss-lint:disable IdSelector, SelectorFormat
|
||||
#jsxc_roster {
|
||||
top: $navbar-height;
|
||||
}
|
||||
// scss-lint:enable IdSelector, SelectorFormat
|
||||
|
|
@ -37,9 +37,6 @@
|
|||
text-decoration: none;
|
||||
margin-right: 25px;
|
||||
}
|
||||
#chat_privilege_toggle > .enabled {
|
||||
color: $text-color-active;
|
||||
}
|
||||
.contacts-header-icon {
|
||||
font-size: 24.5px;
|
||||
line-height: 40px;
|
||||
|
|
|
|||
|
|
@ -93,5 +93,10 @@ textarea {
|
|||
}
|
||||
|
||||
::placeholder { text-transform: uppercase; }
|
||||
|
||||
p {
|
||||
margin-top: .5rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,18 +91,6 @@ ul#help_nav {
|
|||
border-radius: 0px 0px 4px 4px;
|
||||
background-color: white;
|
||||
padding: 10px 20px;
|
||||
|
||||
div.help-chat-icons{
|
||||
text-align: center;
|
||||
font-size: 50px;
|
||||
line-height: 70px;
|
||||
|
||||
[class^="entypo-"], [class*="entypo-"] {
|
||||
color: $text-color-pale;
|
||||
|
||||
&.entypo-chat { color: $text-color-active; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,14 @@
|
|||
padding: 15px;
|
||||
}
|
||||
|
||||
.part-of-diaspora {
|
||||
font-style: italic;
|
||||
|
||||
a {
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
|
||||
.login-form {
|
||||
fieldset { background: none; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
.page-sessions.action-new,
|
||||
.page-sessions.action-create,
|
||||
.page-passwords.action-new,
|
||||
.page-passwords.action-edit {
|
||||
padding-top: 25px;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,30 @@
|
|||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.7rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2.3rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
.img-responsive {
|
||||
display: inline;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
.page-registrations.action-new,
|
||||
.page-registrations.action-create {
|
||||
.page-registrations {
|
||||
.ball {
|
||||
background: image-url('branding/ball.png') no-repeat;
|
||||
background-size: contain;
|
||||
|
|
@ -12,19 +11,24 @@
|
|||
height: 633px;
|
||||
}
|
||||
|
||||
@media (max-width: $screen-xs-max) {
|
||||
.v-center {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
|
||||
h2 {
|
||||
h1 {
|
||||
font-size: 35px;
|
||||
margin: 12px;
|
||||
text-align: center;
|
||||
margin: 12px 0;
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
max-width: 400px;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.captcha-img {
|
||||
|
|
@ -34,16 +38,13 @@
|
|||
width: 120px;
|
||||
}
|
||||
|
||||
.captcha-input {
|
||||
.form-control.captcha-input {
|
||||
border-bottom: 1px solid $input-border;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
height: 40px;
|
||||
line-height: $line-height-base;
|
||||
padding: 10px 10px 10px 130px;
|
||||
width: 100%;
|
||||
padding-left: 130px;
|
||||
}
|
||||
|
||||
.terms > a {
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
<div class='question opened collapsible'>
|
||||
<a class='toggle' href='#'>
|
||||
<h4>{{ add_contact_roster_q }}</h4>
|
||||
</a>
|
||||
<div class='answer hideable'>{{{ add_contact_roster_a }}}</div>
|
||||
</div>
|
||||
|
|
@ -64,12 +64,6 @@
|
|||
<a href="#" class="section-unselected faq-link" data-section="miscellaneous" data-items="back_to_top photo_albums subscribe_feed diaspora_app">{{ title_miscellaneous }}</a>
|
||||
<span class="section-selected">{{ title_miscellaneous }}</span>
|
||||
</li>
|
||||
{{#if chat_enabled }}
|
||||
<li>
|
||||
<a href="#" class="section-unselected faq-link-chat" data-section="chat" data-items="add_contact_roster i_m_a_podmin">{{ title_chat }}</a>
|
||||
<span class="section-selected">{{ title_chat }}</span>
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -161,7 +162,6 @@ class ApplicationController < ActionController::Base
|
|||
|
||||
def gon_set_appconfig
|
||||
gon.push(appConfig: {
|
||||
chat: {enabled: AppConfig.chat.enabled?},
|
||||
settings: {podname: AppConfig.settings.pod_name},
|
||||
map: {mapbox: {
|
||||
enabled: AppConfig.map.mapbox.enabled?,
|
||||
|
|
@ -182,4 +182,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
|
||||
|
|
|
|||
|
|
@ -29,21 +29,19 @@ class AspectsController < ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
@aspect = current_user.aspects.where(id: params[:id]).first
|
||||
|
||||
begin
|
||||
if current_user.auto_follow_back && @aspect.id == current_user.auto_follow_back_aspect.id
|
||||
if current_user.auto_follow_back && aspect.id == current_user.auto_follow_back_aspect.id
|
||||
current_user.update(auto_follow_back: false, auto_follow_back_aspect: nil)
|
||||
flash[:notice] = I18n.t "aspects.destroy.success_auto_follow_back", name: @aspect.name
|
||||
flash[:notice] = I18n.t "aspects.destroy.success_auto_follow_back", name: aspect.name
|
||||
else
|
||||
flash[:notice] = I18n.t "aspects.destroy.success", name: @aspect.name
|
||||
flash[:notice] = I18n.t "aspects.destroy.success", name: aspect.name
|
||||
end
|
||||
@aspect.destroy
|
||||
aspect.destroy
|
||||
rescue ActiveRecord::StatementInvalid => e
|
||||
flash[:error] = I18n.t "aspects.destroy.failure", name: @aspect.name
|
||||
flash[:error] = I18n.t "aspects.destroy.failure", name: aspect.name
|
||||
end
|
||||
|
||||
if request.referer.include?('contacts')
|
||||
if request.referer.include?("contacts")
|
||||
redirect_to contacts_path
|
||||
else
|
||||
redirect_to aspects_path
|
||||
|
|
@ -51,41 +49,35 @@ class AspectsController < ApplicationController
|
|||
end
|
||||
|
||||
def show
|
||||
if @aspect = current_user.aspects.where(:id => params[:id]).first
|
||||
redirect_to aspects_path('a_ids[]' => @aspect.id)
|
||||
if aspect
|
||||
redirect_to aspects_path("a_ids[]" => aspect.id)
|
||||
else
|
||||
redirect_to aspects_path
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@aspect = current_user.aspects.where(:id => params[:id]).first
|
||||
|
||||
if @aspect.update_attributes!(aspect_params)
|
||||
flash[:notice] = I18n.t 'aspects.update.success', :name => @aspect.name
|
||||
if aspect.update!(aspect_params)
|
||||
flash[:notice] = I18n.t "aspects.update.success", name: aspect.name
|
||||
else
|
||||
flash[:error] = I18n.t 'aspects.update.failure', :name => @aspect.name
|
||||
flash[:error] = I18n.t "aspects.update.failure", name: aspect.name
|
||||
end
|
||||
render :json => { :id => @aspect.id, :name => @aspect.name }
|
||||
render json: {id: aspect.id, name: aspect.name}
|
||||
end
|
||||
|
||||
def update_order
|
||||
params[:ordered_aspect_ids].each_with_index do |id, i|
|
||||
current_user.aspects.find(id).update_attributes(order_id: i)
|
||||
current_user.aspects.find(id).update(order_id: i)
|
||||
end
|
||||
head :no_content
|
||||
end
|
||||
|
||||
def toggle_chat_privilege
|
||||
@aspect = current_user.aspects.where(:id => params[:aspect_id]).first
|
||||
|
||||
@aspect.chat_enabled = !@aspect.chat_enabled
|
||||
@aspect.save
|
||||
head :no_content
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def aspect
|
||||
@aspect ||= current_user.aspects.where(id: params[:id]).first
|
||||
end
|
||||
|
||||
def connect_person_to_aspect(aspecting_person_id)
|
||||
@person = Person.find(aspecting_person_id)
|
||||
if @contact = current_user.contact_for(@person)
|
||||
|
|
@ -97,6 +89,6 @@ class AspectsController < ApplicationController
|
|||
end
|
||||
|
||||
def aspect_params
|
||||
params.require(:aspect).permit(:name, :chat_enabled, :order_id)
|
||||
params.require(:aspect).permit(:name, :order_id)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
# the COPYRIGHT file.
|
||||
|
||||
class RegistrationsController < Devise::RegistrationsController
|
||||
before_action :check_registrations_open_or_valid_invite!
|
||||
before_action :check_registrations_open_or_valid_invite!, except: :registrations_closed
|
||||
|
||||
layout -> { request.format == :mobile ? "application" : "with_header" }
|
||||
layout -> { request.format == :mobile ? "application" : "with_header_with_footer" }
|
||||
|
||||
def create
|
||||
@user = User.build(user_params)
|
||||
|
|
@ -28,13 +28,17 @@ class RegistrationsController < Devise::RegistrationsController
|
|||
end
|
||||
end
|
||||
|
||||
def registrations_closed
|
||||
render "registrations/registrations_closed"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_registrations_open_or_valid_invite!
|
||||
return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?)
|
||||
|
||||
flash[:error] = params[:invite] ? t("registrations.invalid_invite") : t("registrations.closed")
|
||||
redirect_to new_user_session_path
|
||||
flash[:error] = t("registrations.invalid_invite") if params[:invite]
|
||||
redirect_to registrations_closed_path
|
||||
end
|
||||
|
||||
def invite
|
||||
|
|
|
|||
|
|
@ -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_for_authentication(username: params[:user][:username]) if params[:user][:username]
|
||||
|
||||
User.find(session[:otp_user_id]) if session[:otp_user_id]
|
||||
end
|
||||
|
||||
def authenticate_with_2fa
|
||||
self.resource = find_user
|
||||
|
||||
return true unless resource&.otp_required_for_login?
|
||||
|
||||
if params[:user][:otp_attempt].present? && session[:otp_user_id]
|
||||
authenticate_with_two_factor_via_otp(resource)
|
||||
else
|
||||
strategy = Warden::Strategies[:database_authenticatable].new(warden.env, :user)
|
||||
prompt_for_two_factor(strategy.user) if strategy.valid? && strategy._run!.successful?
|
||||
end
|
||||
end
|
||||
|
||||
def valid_otp_attempt?(user)
|
||||
user.validate_and_consume_otp!(params[:user][:otp_attempt]) ||
|
||||
user.invalidate_otp_backup_code!(params[:user][:otp_attempt])
|
||||
rescue OpenSSL::Cipher::CipherError => _error
|
||||
false
|
||||
end
|
||||
|
||||
def authenticate_with_two_factor_via_otp(user)
|
||||
if valid_otp_attempt?(user)
|
||||
session.delete(:otp_user_id)
|
||||
sign_in(user)
|
||||
else
|
||||
flash.now[:alert] = "Invalid token"
|
||||
prompt_for_two_factor(user)
|
||||
end
|
||||
end
|
||||
|
||||
def prompt_for_two_factor(user)
|
||||
session[:otp_user_id] = user.id
|
||||
render :two_factor
|
||||
end
|
||||
|
||||
def reset_authentication_token
|
||||
current_user.reset_authentication_token! unless current_user.nil?
|
||||
current_user&.reset_authentication_token!
|
||||
end
|
||||
end
|
||||
|
|
|
|||
55
app/controllers/two_factor_authentications_controller.rb
Normal file
55
app/controllers/two_factor_authentications_controller.rb
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class TwoFactorAuthenticationsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :verify_otp_required, only: [:create]
|
||||
|
||||
def show
|
||||
@user = current_user
|
||||
end
|
||||
|
||||
def create
|
||||
current_user.otp_secret = User.generate_otp_secret(32)
|
||||
current_user.save!
|
||||
redirect_to confirm_two_factor_authentication_path
|
||||
end
|
||||
|
||||
def confirm_2fa
|
||||
redirect_to two_factor_authentication_path if current_user.otp_required_for_login?
|
||||
end
|
||||
|
||||
def confirm_and_activate_2fa
|
||||
if current_user.validate_and_consume_otp!(params[:user][:code])
|
||||
current_user.otp_required_for_login = true
|
||||
current_user.save!
|
||||
|
||||
flash[:notice] = t("two_factor_auth.flash.success_activation")
|
||||
redirect_to recovery_codes_two_factor_authentication_path
|
||||
else
|
||||
flash[:alert] = t("two_factor_auth.flash.error_token")
|
||||
redirect_to confirm_two_factor_authentication_path
|
||||
end
|
||||
end
|
||||
|
||||
def recovery_codes
|
||||
@recovery_codes = current_user.generate_otp_backup_codes!
|
||||
current_user.save!
|
||||
end
|
||||
|
||||
def destroy
|
||||
if current_user.valid_password?(params[:two_factor_authentication][:password])
|
||||
current_user.otp_required_for_login = false
|
||||
current_user.save!
|
||||
flash[:notice] = t("two_factor_auth.flash.success_deactivation")
|
||||
else
|
||||
flash[:alert] = t("users.destroy.wrong_password")
|
||||
end
|
||||
redirect_to two_factor_authentication_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def verify_otp_required
|
||||
redirect_to two_factor_authentication_path if current_user.otp_required_for_login?
|
||||
end
|
||||
end
|
||||
|
|
@ -152,6 +152,8 @@ class UsersController < ApplicationController
|
|||
:auto_follow_back_aspect_id,
|
||||
:getting_started,
|
||||
:post_default_public,
|
||||
:otp_required_for_login,
|
||||
:otp_secret,
|
||||
email_preferences: UserPreference::VALID_EMAIL_TYPES.map(&:to_sym)
|
||||
)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -72,4 +72,9 @@ module ApplicationHelper
|
|||
buf << [nonced_javascript_tag("$.fx.off = true;")] if Rails.env.test?
|
||||
buf.join("\n").html_safe
|
||||
end
|
||||
|
||||
def qrcode_uri
|
||||
label = current_user.username
|
||||
current_user.otp_provisioning_uri(label, issuer: AppConfig.environment.url)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module JsxcHelper
|
||||
def get_bosh_endpoint
|
||||
proto = AppConfig.chat.server.bosh.proto
|
||||
port = AppConfig.chat.server.bosh.port
|
||||
bind = AppConfig.chat.server.bosh.bind
|
||||
host = AppConfig.pod_uri.host
|
||||
|
||||
unless AppConfig.chat.server.bosh.proxy?
|
||||
return "#{proto}://#{host}:#{port}#{bind}"
|
||||
end
|
||||
AppConfig.url_to bind
|
||||
end
|
||||
end
|
||||
|
|
@ -33,7 +33,9 @@ class OpenGraphCache < ApplicationRecord
|
|||
end
|
||||
|
||||
def fetch_and_save_opengraph_data!
|
||||
object = OpenGraphReader.fetch!(self.url)
|
||||
uri = URI.parse(url.start_with?("http") ? url : "http://#{url}")
|
||||
uri.normalize!
|
||||
object = OpenGraphReader.fetch!(uri)
|
||||
|
||||
return unless object
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
class Photo < ApplicationRecord
|
||||
include Diaspora::Federated::Base
|
||||
include Diaspora::Commentable
|
||||
include Diaspora::Shareable
|
||||
|
||||
# NOTE API V1 to be extracted
|
||||
|
|
|
|||
|
|
@ -19,7 +19,14 @@ class User < ApplicationRecord
|
|||
scope :halfyear_actives, ->(time = Time.now) { logged_in_since(time - 6.month) }
|
||||
scope :active, -> { joins(:person).where(people: {closed_account: false}) }
|
||||
|
||||
devise :database_authenticatable, :registerable,
|
||||
attr_encrypted :otp_secret, if: false, prefix: "plain_"
|
||||
|
||||
devise :two_factor_authenticatable,
|
||||
:two_factor_backupable,
|
||||
otp_backup_code_length: 16,
|
||||
otp_number_of_backup_codes: 10
|
||||
|
||||
devise :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable,
|
||||
:lockable, :lastseenable, :lock_strategy => :none, :unlock_strategy => :none
|
||||
|
||||
|
|
@ -42,6 +49,7 @@ class User < ApplicationRecord
|
|||
validate :no_person_with_same_username
|
||||
|
||||
serialize :hidden_shareables, Hash
|
||||
serialize :otp_backup_codes, Array
|
||||
|
||||
has_one :person, inverse_of: :owner, foreign_key: :owner_id
|
||||
has_one :profile, through: :person
|
||||
|
|
@ -583,6 +591,10 @@ class User < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
def remember_me
|
||||
true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def clearable_fields
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ class NodeInfoPresenter
|
|||
doc.services.outbound = available_services
|
||||
doc.open_registrations = open_registrations?
|
||||
doc.metadata["nodeName"] = name
|
||||
doc.metadata["xmppChat"] = chat_enabled?
|
||||
doc.metadata["camo"] = camo_config
|
||||
doc.metadata["adminAccount"] = admin_account
|
||||
end
|
||||
|
|
@ -70,10 +69,6 @@ class NodeInfoPresenter
|
|||
AppConfig.settings.enable_registrations?
|
||||
end
|
||||
|
||||
def chat_enabled?
|
||||
AppConfig.chat.enabled?
|
||||
end
|
||||
|
||||
def camo_config
|
||||
{
|
||||
markdown: AppConfig.privacy.camo.proxy_markdown_images?,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
module Export
|
||||
class AspectSerializer < ActiveModel::Serializer
|
||||
attributes :name, :chat_enabled
|
||||
attributes :name
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -10,7 +10,11 @@ class DiasporaLinkService
|
|||
end
|
||||
|
||||
def find_or_fetch_entity
|
||||
entity_finder.find || fetch_entity
|
||||
if type && guid
|
||||
entity_finder.find || fetch_entity
|
||||
elsif author
|
||||
find_or_fetch_person
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -28,6 +32,12 @@ class DiasporaLinkService
|
|||
@entity_finder ||= Diaspora::EntityFinder.new(type, guid)
|
||||
end
|
||||
|
||||
def find_or_fetch_person
|
||||
Person.find_or_fetch_by_identifier(author)
|
||||
rescue DiasporaFederation::Discovery::DiscoveryError
|
||||
nil
|
||||
end
|
||||
|
||||
def normalize
|
||||
link.gsub!(%r{^web\+diaspora://}, "diaspora://") ||
|
||||
link.gsub!(%r{^//}, "diaspora://") ||
|
||||
|
|
@ -38,8 +48,10 @@ class DiasporaLinkService
|
|||
def parse
|
||||
normalize
|
||||
match = DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX.match(link)
|
||||
@author = match[1]
|
||||
@type = match[2]
|
||||
@guid = match[3]
|
||||
if match
|
||||
@author, @type, @guid = match.captures
|
||||
else
|
||||
@author = %r{^diaspora://(#{Validation::Rule::DiasporaId::DIASPORA_ID_REGEX})$}u.match(link)&.captures&.first
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,13 +4,6 @@
|
|||
- if @aspect.contacts.size > 0 && @aspect.contacts.size < 20
|
||||
= start_a_conversation_link(@aspect, @aspect.contacts.size)
|
||||
|
||||
-if AppConfig.chat.enabled?
|
||||
= link_to aspect_toggle_chat_privilege_path(@aspect), id: "chat_privilege_toggle", class: "contacts_button", method: :put, remote: true do
|
||||
-if @aspect.chat_enabled?
|
||||
%i.entypo-chat.enabled.contacts-header-icon{title: t("javascripts.contacts.aspect_chat_is_enabled")}
|
||||
-else
|
||||
%i.entypo-chat.contacts-header-icon{title: t("javascripts.contacts.aspect_chat_is_not_enabled")}
|
||||
|
||||
= link_to @aspect, method: "delete", data: { confirm: t("aspects.edit.confirm_remove_aspect") }, class: "delete contacts_button", id: "delete_aspect" do
|
||||
%i.entypo-trash.contacts-header-icon{title: t("delete")}
|
||||
.pull-right.contact-list-search
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
autocorrect: "off",
|
||||
aria: {labelledby: "passwordConfirmationLabel"}
|
||||
|
||||
= hidden_field(:user, :remember_me, value: 1)
|
||||
= f.submit t("devise.passwords.edit.change_password"), class: "btn btn-block btn-primary"
|
||||
|
||||
.text-center
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@
|
|||
.row
|
||||
.col-md-8.text-center
|
||||
%h1= t("home.default.headline", pod_name: pod_name)
|
||||
- if pod_name != "diaspora*"
|
||||
%h2.part-of-diaspora
|
||||
!= t("home.default.part_of_diaspora",
|
||||
diaspora_site_link: link_to(t("home.default.diaspora_site_link"), "https://diasporafoundation.org/"))
|
||||
%h2= t("home.default.byline")
|
||||
.col-md-4.login-form
|
||||
= render partial: "sessions/form", locals: {mobile: false, resource: User.new, resource_name: :user}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
%ul.nav.navbar-nav.navbar-right
|
||||
- if AppConfig.settings.enable_registrations? && !current_page?(controller: "/registrations", action: :new)
|
||||
- unless current_page?(controller: "/registrations", action: :new)
|
||||
%li= link_to t("devise.shared.links.sign_up"), new_user_registration_path, class: "login"
|
||||
- unless current_page?(controller: "/sessions", action: :new)
|
||||
%li= link_to t("devise.shared.links.sign_in"), new_user_session_path, class: "login"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
- if mobile
|
||||
%legend
|
||||
= image_tag("branding/logos/header-logo2x.png", height: 40, width: 40)
|
||||
= t("aspects.aspect_stream.make_something")
|
||||
= AppConfig.settings.pod_name
|
||||
|
||||
- if mobile
|
||||
= f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel"
|
||||
|
|
|
|||
11
app/views/registrations/_registrations_closed.haml
Normal file
11
app/views/registrations/_registrations_closed.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
%h2
|
||||
= t("devise.shared.links.sign_up_closed")
|
||||
|
||||
!= t("registrations.closed.closed_pod",
|
||||
wiki: link_to(t("registrations.closed.another_pod"), "https://diasporafoundation.org/getting_started/sign_up"))
|
||||
|
||||
!= t("registrations.closed.find_pods",
|
||||
poduptime: link_to("Poduptime", "https://podupti.me/"))
|
||||
|
||||
!= t("registrations.closed.other_questions",
|
||||
wiki: link_to("Wiki", "https://wiki.diasporafoundation.org/Choosing_a_pod"))
|
||||
|
|
@ -1,12 +1,11 @@
|
|||
#registration
|
||||
.container
|
||||
.row
|
||||
.col-md-10.offset1
|
||||
.col-md-7.hidden-phone
|
||||
%h1.ball
|
||||
.col-md-5.v-center
|
||||
.content.text-center
|
||||
%h2#pod-name
|
||||
= AppConfig.settings.pod_name
|
||||
.col-sm-6.hidden-xs
|
||||
.ball
|
||||
.col-sm-6.col-xs-12.v-center
|
||||
.content.text-center
|
||||
%h1#pod-name
|
||||
= AppConfig.settings.pod_name
|
||||
|
||||
= render partial: "form", locals: {mobile: false}
|
||||
= render partial: "form", locals: {mobile: false}
|
||||
|
|
|
|||
8
app/views/registrations/registrations_closed.haml
Normal file
8
app/views/registrations/registrations_closed.haml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#registration
|
||||
.container
|
||||
.row
|
||||
.col-sm-6.hidden-xs
|
||||
.ball
|
||||
.col-sm-6.col-xs-12.v-center
|
||||
.content
|
||||
= render partial: "registrations_closed"
|
||||
10
app/views/registrations/registrations_closed.mobile.haml
Normal file
10
app/views/registrations/registrations_closed.mobile.haml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
.stream#main-stream
|
||||
- flash.each do |name, msg|
|
||||
.expose#flash-container
|
||||
.flash-message{class: "message alert alert-#{flash_class name}", role: "alert"}
|
||||
= msg
|
||||
|
||||
.login-form
|
||||
.login-container
|
||||
= render partial: "registrations_closed"
|
||||
|
|
@ -40,5 +40,4 @@
|
|||
autocorrect: "off",
|
||||
aria: {labelledby: "passwordLabel"}
|
||||
|
||||
= f.hidden_field :remember_me, value: 1
|
||||
= f.submit t("devise.sessions.new.sign_in"), class: "btn btn-large btn-block btn-primary"
|
||||
|
|
|
|||
31
app/views/sessions/two_factor.html.haml
Normal file
31
app/views/sessions/two_factor.html.haml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
- content_for :page_title do
|
||||
= AppConfig.settings.pod_name + " - " + t("two_factor_auth.title")
|
||||
|
||||
.container#twofa
|
||||
.text-center
|
||||
.logos-asterisk
|
||||
%h1
|
||||
= t("two_factor_auth.title")
|
||||
|
||||
|
||||
= form_for resource, as: resource_name,
|
||||
url: session_path(resource_name),
|
||||
html: {class: "block-form"},
|
||||
method: :post do |f|
|
||||
%fieldset
|
||||
%label.sr-only#otp-label{for: "otp_attempt"}
|
||||
= t("two_factor_auth.input_token.label")
|
||||
%i.entypo-lock
|
||||
= f.text_field :otp_attempt,
|
||||
type: :text,
|
||||
placeholder: t("two_factor_auth.input_token.placeholder"),
|
||||
required: true,
|
||||
autofocus: true,
|
||||
class: "input-block-level form-control"
|
||||
%p= t "two_factor_auth.recovery.reminder"
|
||||
|
||||
|
||||
.actions
|
||||
= f.button t("devise.sessions.new.sign_in"),
|
||||
type: :submit,
|
||||
class: "btn btn-large btn-block btn-primary"
|
||||
|
|
@ -9,6 +9,8 @@
|
|||
class: request.path == edit_user_path ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("privacy"), privacy_settings_path,
|
||||
class: current_page?(privacy_settings_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("two_factor_auth.title"), two_factor_authentication_path,
|
||||
class: current_page?(two_factor_authentication_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("_services"), services_path,
|
||||
class: current_page?(services_path) ? "list-group-item active" : "list-group-item"
|
||||
= link_to t("_applications"), api_openid_connect_user_applications_path,
|
||||
|
|
|
|||
|
|
@ -2,11 +2,6 @@
|
|||
-# licensed under the Affero General Public License version 3 or later. See
|
||||
-# the COPYRIGHT file.
|
||||
|
||||
- content_for :head do
|
||||
- if AppConfig.chat.enabled?
|
||||
= javascript_include_tag :jsxc, id: 'jsxc',
|
||||
data: { endpoint: get_bosh_endpoint }
|
||||
|
||||
- if current_user&.getting_started?
|
||||
#welcome-to-diaspora
|
||||
.container-fluid
|
||||
|
|
|
|||
11
app/views/two_factor_authentications/_activate.haml
Normal file
11
app/views/two_factor_authentications/_activate.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
%p= t("two_factor_auth.explanation")
|
||||
|
||||
.well= t("two_factor_auth.deactivated.status")
|
||||
= form_for "user", url: two_factor_authentication_path, html: {method: :post} do |f|
|
||||
= f.hidden_field :otp_required_for_login, value: true
|
||||
.clearfix.form-group= f.submit t("two_factor_auth.deactivated.change_button"),
|
||||
class: "btn btn-primary pull-right"
|
||||
33
app/views/two_factor_authentications/_confirm.haml
Normal file
33
app/views/two_factor_authentications/_confirm.haml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.confirm.title")
|
||||
%p= t("two_factor_auth.confirm.status")
|
||||
.small-horizontal-spacer
|
||||
%h4= t("two_factor_auth.confirm.scan_title")
|
||||
.row
|
||||
.col-md-6
|
||||
%p= t("two_factor_auth.confirm.scan_explanation")
|
||||
.two-factor-qr
|
||||
!= RQRCode::QRCode.new(qrcode_uri).as_svg(offset: 10, fill: "ffffff", module_size: 5)
|
||||
|
||||
.col-md-6
|
||||
%p= t("two_factor_auth.confirm.manual_explanation")
|
||||
%p!= t("two_factor_auth.confirm.manual_explanation_cont")
|
||||
%pre.well= current_user.otp_secret.scan(/.{4}/).join(" ")
|
||||
|
||||
.row
|
||||
.col-md-12
|
||||
.small-horizontal-spacer
|
||||
%h4= t("two_factor_auth.confirm.input_title")
|
||||
= t("two_factor_auth.confirm.input_explanation")
|
||||
= form_for "user", url: confirm_two_factor_authentication_path,
|
||||
html: {method: :post, class: "form-horizontal"} do |f|
|
||||
.form-group
|
||||
= f.label :code, t("two_factor_auth.input_token.label"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.text_field :code, placeholder: t("two_factor_auth.input_token.placeholder"), class: "form-control"
|
||||
.form-group
|
||||
.col-sm-12
|
||||
= link_to t("cancel"), two_factor_authentication_path, class: "btn btn-default"
|
||||
= f.submit t("two_factor_auth.confirm.activate_button"), class: "btn btn-primary pull-right"
|
||||
27
app/views/two_factor_authentications/_deactivate.haml
Normal file
27
app/views/two_factor_authentications/_deactivate.haml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
%p= t("two_factor_auth.explanation")
|
||||
.well= t("two_factor_auth.activated.status")
|
||||
|
||||
%hr
|
||||
|
||||
%h4= t("two_factor_auth.activated.change_button")
|
||||
%p= t("two_factor_auth.activated.change_label")
|
||||
|
||||
= form_for "two_factor_authentication", url: two_factor_authentication_path,
|
||||
html: {method: :delete, class: "form-horizontal"} do |f|
|
||||
.form-group
|
||||
= f.label :password, t("users.edit.current_password"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.password_field :password, class: "form-control"
|
||||
.clearfix= f.submit t("two_factor_auth.activated.change_button"), class: "btn btn-primary pull-right"
|
||||
|
||||
%hr
|
||||
|
||||
%h4= t("two_factor_auth.recovery.title")
|
||||
%p= t("two_factor_auth.recovery.explanation_short")
|
||||
%p= t("two_factor_auth.recovery.invalidation_notice")
|
||||
%p= link_to t("two_factor_auth.recovery.button"),
|
||||
recovery_codes_two_factor_authentication_path, class: "btn btn-default"
|
||||
18
app/views/two_factor_authentications/_recovery.haml
Normal file
18
app/views/two_factor_authentications/_recovery.haml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
.col-md-12
|
||||
.row
|
||||
.col-md-12
|
||||
%h3= t("two_factor_auth.title")
|
||||
.well= t("two_factor_auth.activated.status")
|
||||
|
||||
%hr
|
||||
|
||||
%h3= t("two_factor_auth.recovery.title")
|
||||
%p= t("two_factor_auth.recovery.explanation")
|
||||
|
||||
%ol.recovery-codes
|
||||
- @recovery_codes.each do |code|
|
||||
%li<
|
||||
%samp= code
|
||||
|
||||
.form-group.submit_block.clearfix
|
||||
= link_to t("ok"), two_factor_authentication_path, class: "btn btn-primary pull-right"
|
||||
4
app/views/two_factor_authentications/_token_form.haml
Normal file
4
app/views/two_factor_authentications/_token_form.haml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.form-group
|
||||
= f.label :code, t("two_factor_auth.input_token.label"), class: "control-label col-sm-6"
|
||||
.col-sm-6
|
||||
= f.text_field :code, placeholder: t("two_factor_auth.input_token.placeholder"), class: "form-control"
|
||||
11
app/views/two_factor_authentications/confirm_2fa.html.haml
Normal file
11
app/views/two_factor_authentications/confirm_2fa.html.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.confirm.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
= render "confirm"
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.title")
|
||||
= t("two_factor_auth.recovery.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
= render "recovery"
|
||||
15
app/views/two_factor_authentications/show.html.haml
Normal file
15
app/views/two_factor_authentications/show.html.haml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
- content_for :page_title do
|
||||
= t("two_factor_auth.title")
|
||||
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar
|
||||
= render "shared/settings_nav"
|
||||
.col-md-9
|
||||
.framed-content.clearfix
|
||||
|
||||
- if @user.otp_required_for_login
|
||||
= render "deactivate"
|
||||
- else
|
||||
= render "activate"
|
||||
11
app/workers/cleanup_pending_photos.rb
Normal file
11
app/workers/cleanup_pending_photos.rb
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Workers
|
||||
class CleanupPendingPhotos < Base
|
||||
sidekiq_options queue: :low
|
||||
|
||||
def perform
|
||||
Photo.where(pending: true).where("created_at < ?", 1.day.ago).destroy_all
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
If you want to encrypt your chat streams with prosody.
|
||||
Add to `config/certs` your server certificate and key.
|
||||
|
||||
The domain name should be included in the file name e.g.:
|
||||
|
||||
* example.com.crt
|
||||
* example.com.key
|
||||
|
|
@ -49,21 +49,6 @@ defaults:
|
|||
unicorn_timeout: 90
|
||||
embed_sidekiq_worker: false
|
||||
sidekiq_workers: 1
|
||||
chat:
|
||||
enabled: false
|
||||
server:
|
||||
enabled: true
|
||||
certs: "config/certs"
|
||||
bosh:
|
||||
proxy: false
|
||||
proto: 'http'
|
||||
address: '0.0.0.0'
|
||||
port: 5280
|
||||
bind: '/http-bind'
|
||||
log:
|
||||
info: 'log/prosody.log'
|
||||
error: 'log/prosody.err'
|
||||
debug: false
|
||||
map:
|
||||
mapbox:
|
||||
enabled: false
|
||||
|
|
|
|||
|
|
@ -186,8 +186,8 @@ configuration: ## Section
|
|||
#rails_environment: 'development'
|
||||
|
||||
## Write unicorn stderr and stdout log.
|
||||
#stderr_log: '/usr/local/app/diaspora/log/unicorn-stderr.log'
|
||||
#stdout_log: '/usr/local/app/diaspora/log/unicorn-stdout.log'
|
||||
#stderr_log: 'log/unicorn-stderr.log'
|
||||
#stdout_log: 'log/unicorn-stdout.log'
|
||||
|
||||
## Number of Unicorn worker processes (default=2).
|
||||
## Increase this if you have many users.
|
||||
|
|
@ -208,68 +208,6 @@ configuration: ## Section
|
|||
## increase environment.sidekiq.concurrency instead!
|
||||
#sidekiq_workers: 1
|
||||
|
||||
## Diaspora has an internal XMPP web-client. If you want to enable the chat
|
||||
## functionality or want to use a custom XMPP server, then you should edit
|
||||
## the following configuration.
|
||||
chat: ## Section
|
||||
|
||||
## Enable the chat service and all its components.
|
||||
##
|
||||
## Please make sure that you followed the Installation-Instructions first:
|
||||
## https://wiki.diasporafoundation.org/Integration/Chat#Installation.2FUpdate
|
||||
#enabled: true
|
||||
|
||||
## Custom XMPP server configuration goes here.
|
||||
server: ## Section
|
||||
|
||||
## Use the configuration bridge to prosody (default=true).
|
||||
## In case you want to run your own server or want to configure
|
||||
## prosody on your own, you should disable it.
|
||||
#enabled: false
|
||||
|
||||
## Set the directory in which to look for virtual hosts TLS certificates.
|
||||
#certs: 'config/certs'
|
||||
|
||||
## XEP-0124 BOSH requests
|
||||
## The easiest way of avoiding certificate and mixed-content issues
|
||||
## is to use a proxy, e.g.:
|
||||
##
|
||||
## Apache: https://wiki.diasporafoundation.org/Integration/Chat#Apache2
|
||||
## Nginx: https://wiki.diasporafoundation.org/Integration/Chat#Nginx
|
||||
##
|
||||
## If you configured your proxy correctly,
|
||||
## you should set the proxy option to 'true'
|
||||
bosh: ## Section
|
||||
|
||||
## If you'd like to use a proxy, you should set the proxy
|
||||
## option to true, otherwise jsxc always tries to
|
||||
## connect directly to the port specified below.
|
||||
#proxy: true
|
||||
|
||||
## Configure the protocol used to access the BOSH endpoint
|
||||
#proto: http
|
||||
|
||||
## Configure the address that prosody should listen on.
|
||||
#address: '0.0.0.0'
|
||||
|
||||
## Configure the BOSH port.
|
||||
#port: 5280
|
||||
|
||||
## Configure the bind endpoint.
|
||||
#bind: '/http-bind'
|
||||
|
||||
## Specify log behaviour here.
|
||||
log: ## Section
|
||||
|
||||
## Log file location.
|
||||
#info: 'log/prosody.log'
|
||||
|
||||
## Error log file location.
|
||||
#error: 'log/prosody.err'
|
||||
|
||||
## The debug level logs all XML sent and received by the server.
|
||||
#debug: false
|
||||
|
||||
## Displays the location of a post in a map. Per default we are using the map
|
||||
## tiles of the Heidelberg University (http://giscience.uni-hd.de).
|
||||
## You also have the possibility to use the map tiles of https://www.mapbox.com
|
||||
|
|
|
|||
|
|
@ -50,13 +50,4 @@ Eye.application("diaspora") do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
with_condition(AppConfig.chat.enabled? && AppConfig.chat.server.enabled?) do
|
||||
process :xmpp do
|
||||
start_command "bin/bundle exec rails runner Prosody.start"
|
||||
daemonize true
|
||||
pid_file "tmp/pids/xmpp.pid"
|
||||
stop_signals [:TERM, 10.seconds, :KILL]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ Devise.setup do |config|
|
|||
# It will change confirmation, password recovery and other workflows
|
||||
# to behave the same regardless if the e-mail provided was right or wrong.
|
||||
# Does not affect registerable.
|
||||
# config.paranoid = true
|
||||
config.paranoid = true
|
||||
|
||||
# By default Devise will store the user in session. You can skip storage for
|
||||
# particular strategies by setting this option.
|
||||
|
|
@ -270,4 +270,8 @@ Devise.setup do |config|
|
|||
# When using omniauth, Devise cannot automatically set Omniauth path,
|
||||
# so you need to do it manually. For the users scope, it would be:
|
||||
# config.omniauth_path_prefix = '/my_engine/users/auth'
|
||||
|
||||
# if a user enables 2fa this would log them in without requiring them
|
||||
# to enter a token
|
||||
config.sign_in_after_reset_password = false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@
|
|||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
Rails.application.config.filter_parameters += %i[password message text bio]
|
||||
Rails.application.config.filter_parameters += [:otp_attempt]
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
if AppConfig.chat.enabled? && AppConfig.chat.server.enabled?
|
||||
db = Rails.application.config
|
||||
.database_configuration[Rails.env]
|
||||
|
||||
Prosody.update_configuration(
|
||||
bosh_port: AppConfig.chat.server.bosh.port, bosh_path: AppConfig.chat.server.bosh.bind,
|
||||
bosh_interface: AppConfig.chat.server.bosh.address,
|
||||
|
||||
log_debug: (AppConfig.chat.server.log.debug? ? "debug" : "info"),
|
||||
log_info: "#{Dir.pwd}/#{AppConfig.chat.server.log.info}",
|
||||
log_error: "#{Dir.pwd}/#{AppConfig.chat.server.log.error}",
|
||||
|
||||
certs: "#{Dir.pwd}/#{AppConfig.chat.server.certs}",
|
||||
hostname: AppConfig.environment.url,
|
||||
|
||||
virtualhost_driver: db["adapter"],
|
||||
virtualhost_database: db["database"],
|
||||
virtualhost_username: db["username"],
|
||||
virtualhost_password: db["password"],
|
||||
virtualhost_host: db["host"]
|
||||
)
|
||||
end
|
||||
|
|
@ -29,14 +29,6 @@ SecureHeaders::Configuration.default do |config|
|
|||
csp[:style_src] << asset_host
|
||||
end
|
||||
|
||||
if AppConfig.chat.enabled?
|
||||
csp[:media_src] << "data:"
|
||||
|
||||
unless AppConfig.chat.server.bosh.proxy?
|
||||
csp[:connect_src] << "#{AppConfig.pod_uri.host}:#{AppConfig.chat.server.bosh.port}"
|
||||
end
|
||||
end
|
||||
|
||||
csp[:script_src] << "code.jquery.com" if AppConfig.privacy.jquery_cdn?
|
||||
csp[:form_action] << "www.paypal.com" if AppConfig.settings.paypal_donations.enable?
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,11 @@ def default_job_config
|
|||
"class": "Workers::CleanupOldExports"
|
||||
},
|
||||
|
||||
cleanup_pending_photos: {
|
||||
"cron": "#{random_minute.call} #{random_hour.call} * * *",
|
||||
"class": "Workers::CleanupPendingPhotos"
|
||||
},
|
||||
|
||||
queue_users_for_removal: {
|
||||
"cron": "#{random_minute.call} #{random_hour.call} * * *",
|
||||
"class": "Workers::QueueUsersForRemoval"
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ ar:
|
|||
new:
|
||||
email: "البريد الإلكترونيّ"
|
||||
forgot_password: "أنسيت كلمة المرور؟"
|
||||
no_account: "ليس هناك حساب بهذا البريد الإلكترونيّ"
|
||||
reset_password: "صفّر كلمة المرور"
|
||||
send_password_instructions: "أرسل لي إرشادات تصفير كلمة المرور"
|
||||
send_instructions: "سيصلك بريد إلكترونيّ قريبًا فيه إرشادات تصفير كلمة المرور."
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ art-nvi:
|
|||
change_password: "Leykatem oeyä ftemlì'ut"
|
||||
new:
|
||||
forgot_password: "Ngal tswama' ngeyä ftemlì'uti srak?"
|
||||
no_account: "Kea Diaspora a hu fìImeyl fkeytok. Diasporari txo perey, ayoe terìng ayDiasporat ye'rìn"
|
||||
send_password_instructions: "Fpe' oeru aysänumet fte oe tsivun leykivatem oeyä ftemlì'ut"
|
||||
send_instructions: "Ngal tayel Imeylit a wìntxu ngaru fya'ot a ngal leykatem ngeyä ftemlì'ut."
|
||||
updated: "Ngeyä ftemlì'u lìmatem. Nga tung fìtsengmì set."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ bg:
|
|||
change_password: "Промяна на паролата"
|
||||
new:
|
||||
forgot_password: "Забравена парола?"
|
||||
no_account: "Не съществува акаунт с въведената ел. поща. Ако очаквате покана, знайте че ние ги раздаваме възможно най-бързо"
|
||||
send_password_instructions: "Изпращане на инструкции за възстановяване на паролата"
|
||||
send_instructions: "Ще получите ел. писмо с инструкции за промяна на паролата."
|
||||
updated: "Паролата е променена успешно. Сега сте вписани."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ br:
|
|||
new:
|
||||
email: "Chomlec'h postel"
|
||||
forgot_password: "Ankouaet ho ker-tremen ganeoc'h?"
|
||||
no_account: "N'eus kont ebet stag ouzh ar postel-mañ."
|
||||
reset_password: "Adtermeniñ ar ger-tremen"
|
||||
send_password_instructions: "Kas din an titouroù evit adsevel ma ger-tremen"
|
||||
send_instructions: "Emaoc'h o vont da resev ur postel a-raok pell gant titouroù evit gouzout an doare da adsevel ho ker-tremen."
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ bs:
|
|||
change_password: "Promjeni moju šifru"
|
||||
new:
|
||||
forgot_password: "Zaboravili ste šifru?"
|
||||
no_account: "Ne postoji račun sa ovom e-mail adresom. Ako očekujete pozivnicu, šaljemo ih čim prije."
|
||||
send_password_instructions: "Pošalji mi uputstva za resetovanje šifre"
|
||||
send_instructions: "Dobit ćete e-mail sa uputstvima kako da resetujete vašu šifru za par minuta."
|
||||
updated: "Vaša šifra je uspješno promijenjena. Sada ste prijavljeni."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ cs:
|
|||
new:
|
||||
email: "E-mailová adresa"
|
||||
forgot_password: "Zapomněli jste heslo?"
|
||||
no_account: "Neexistuje žádný účet s touto e-mailovou adresou. Pokud čekáte na pozvání, budeme je vydávat, co nejdříve to bude možné"
|
||||
reset_password: "Znovunastavit heslo"
|
||||
send_password_instructions: "Zaslat instrukce k nastavení nového hesla."
|
||||
no_token: "Na tuto stránku se nemůžete dostat, pokud nepřicházíte z e-mailu pro obnovení hesla. Pokud z e-mailu přicházíte, ujistěte se, že používáte celé poskytnuté URL."
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ cy:
|
|||
change_password: "Newid fy nghyfrinair"
|
||||
new:
|
||||
forgot_password: "Wedi anghofio eich cyfrinair?"
|
||||
no_account: "Dim cyfrif gyda e-bost hwn yn bodoli. Os ydych yn aros am wahodd, rhaid i chi aros hwyrach bach..."
|
||||
send_instructions: "Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau."
|
||||
updated: "Newidiwyd eich cyfrinair yn llwyddiannus. Rydych chi wedi arwyddo i fewn."
|
||||
registrations:
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ da:
|
|||
new:
|
||||
email: "E-mail adresse"
|
||||
forgot_password: "Glemt din adgangskode?"
|
||||
no_account: "Ingen konto med denne email adresse eksisterer."
|
||||
reset_password: "Nulstil adgangskode"
|
||||
send_password_instructions: "Send mig instruktioner til nulstilning af adgangskode"
|
||||
no_token: "Du kan ikke tilgå denne side uden at komme fra en e-mail med nulstilling af dit kodeord. Hvis du kommer fra sådan en e-mail, undersøg venligst at du har brugt hele den URL der stod i mailen."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de-moo:
|
|||
new:
|
||||
email: "Email-Adresse"
|
||||
forgot_password: "Passwort vergessen?"
|
||||
no_account: "Es existiert keine Kuh mit dieser E-Mail-Adresse"
|
||||
reset_password: "Passwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Du kannst auf diese Weide nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls du von einer E-Mail zur Passwortrücksetzung kommst, vergewissere dich bitte, dass du die vollständige angegebene URL verwendet hast."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de:
|
|||
new:
|
||||
email: "E-Mail-Adresse"
|
||||
forgot_password: "Kennwort vergessen?"
|
||||
no_account: "Es existiert kein Benutzerkonto mit dieser E-Mail-Adresse"
|
||||
reset_password: "Kennwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Du kannst auf diese Seite nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls du von einer E-Mail zur Passwortrücksetzung kommst, vergewissere dich bitte, dass du die vollständige angegebene URL verwendet hast."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ de_formal:
|
|||
new:
|
||||
email: "E-Mail-Adresse"
|
||||
forgot_password: "Passwort vergessen?"
|
||||
no_account: "Es existiert kein Benutzerkonto mit dieser E-Mail-Adresse"
|
||||
reset_password: "Passwort zurücksetzen"
|
||||
send_password_instructions: "Anleitung zum Zurücksetzen des Кennworts anfordern"
|
||||
no_token: "Sie können auf diese Seite nicht zugreifen, ohne von einer E-Mail zur Passwortrücksetzung zu kommen. Falls sie von einer E-Mail zur Passwortrücksetzung kommen, vergewissern Sie sich bitte, dass Sie die vollständige angegebene URL verwendet haben."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ el:
|
|||
new:
|
||||
email: "Διεύθυνση email"
|
||||
forgot_password: "Ξεχάσατε τον κωδικό σας;"
|
||||
no_account: "Δεν υπάρχει λογαριασμός με αυτό το email. Αν περιμένετε για πρόσκληση, θα γίνουν αποστολές το συντομότερο δυνατόν"
|
||||
reset_password: "Επαναφορά κωδικού"
|
||||
send_password_instructions: "Στείλτε μου οδηγίες επαναφοράς κωδικού"
|
||||
send_instructions: "Θα λάβετε ένα email με οδηγίες για το πως να επαναφέρετε τον κωδικό πρόσβασης σας σε λίγα λεπτά."
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ en:
|
|||
confirm_password: Confirm password
|
||||
new:
|
||||
forgot_password: Forgot your password?
|
||||
no_account: No account with this email exists
|
||||
reset_password: Reset password
|
||||
email: Email address
|
||||
send_password_instructions: Send me reset password instructions
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ en_1337:
|
|||
change_password: "CH4NG3 MY *****"
|
||||
new:
|
||||
forgot_password: "F0RG07 Y0UR *****?"
|
||||
no_account: "404 - N07 F0UND!"
|
||||
send_password_instructions: "R3537 MY *****!!"
|
||||
send_instructions: "G0NN4 R3C113V3 R3537 1N57RUC71ON5 BY M41L!"
|
||||
updated: "***** CH4NG3D"
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ en_shaw:
|
|||
change_password: "𐑗𐑱𐑯𐑡 𐑥𐑲 𐑐𐑨𐑕𐑢𐑼𐑛"
|
||||
new:
|
||||
forgot_password: "𐑓𐑹𐑜𐑪𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛?"
|
||||
no_account: "𐑯𐑴 𐑩𐑒𐑬𐑯𐑑 𐑢𐑦𐑞 𐑞𐑦𐑕 𐑦-𐑥𐑱𐑤 𐑧𐑜𐑟𐑦𐑕𐑑𐑕. 𐑦𐑓 𐑿 𐑸 𐑢𐑱𐑑𐑦𐑙 𐑓𐑹 𐑩𐑯 𐑦𐑯𐑝𐑲𐑑, 𐑢𐑰 𐑸 𐑮𐑴𐑤𐑦𐑙 𐑞𐑧𐑥 𐑬𐑑 𐑨𐑟 𐑕𐑵𐑯 𐑨𐑟 𐑐𐑪𐑕𐑦𐑚𐑩𐑤"
|
||||
send_password_instructions: "𐑕𐑧𐑯𐑛 𐑥𐑰 𐑮𐑦𐑕𐑧𐑑 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟"
|
||||
send_instructions: "𐑿 𐑢𐑦𐑤 𐑮𐑦𐑕𐑰𐑝 𐑩𐑯 𐑦-𐑥𐑱𐑤 𐑢𐑦𐑞 𐑦𐑯𐑕𐑑𐑮𐑳𐑒𐑖𐑩𐑯𐑟 𐑩𐑚𐑬𐑑 𐑣𐑬 𐑑 𐑮𐑦𐑕𐑧𐑑 𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑦𐑯 𐑩 𐑓𐑿 𐑥𐑦𐑯𐑩𐑑𐑕."
|
||||
updated: "𐑿𐑼 𐑐𐑨𐑕𐑢𐑼𐑛 𐑢𐑪𐑟 𐑗𐑱𐑯𐑡𐑛 𐑕𐑩𐑒𐑕𐑧𐑕𐑓𐑫𐑤𐑦. 𐑿 𐑸 𐑯𐑬 𐑕𐑲𐑯𐑛 𐑦𐑯."
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ en_valspeak:
|
|||
new:
|
||||
email: "Email addy"
|
||||
forgot_password: "Oh noes!? did u like, forget ur passwerd? D:"
|
||||
no_account: "sry but liek, no account that has this email existz... sry bout that :\\"
|
||||
reset_password: "Reset passwerd"
|
||||
send_password_instructions: "Send meh stuff on how 2 reset mah passwerd plz! Kthxbye <3"
|
||||
send_instructions: "U will like, receive an email wit some txt on how 2 liek... reset ur passwerd in a few min, kay? So just chillax till then, kay? Kay. <3"
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ eo:
|
|||
change_password: "Ŝanĝi mian pasvorton"
|
||||
new:
|
||||
forgot_password: "Ĉu vi forgesis vian pasvorton?"
|
||||
no_account: "Ne ekzistas konto kun ĉi tiu retpoŝtadreso. Se vi atendas inviton, ni plej rapide sendos ilin"
|
||||
send_password_instructions: "Sendi al mi instrukciojn por restartigi pasvorton"
|
||||
send_instructions: "Post kelkaj minutoj vi ricevos retpoŝton kun instrukcioj pri kiel restartigi vian pasvorton."
|
||||
updated: "Vi sukcese ŝanĝis vian pasvorton. Vi nun estas ensalutinta."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ es-AR:
|
|||
new:
|
||||
email: "Correo electrónico"
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No hay ninguna cuenta con esta dirección de correo electrónico. Si estás esperando una invitación, te la enviaremos tan pronto como sea posible."
|
||||
reset_password: "Resetear contraseña"
|
||||
send_password_instructions: "Enviame instrucciones para cambiar mi contraseña."
|
||||
no_token: "No puedes acceder a esta página si no vienes de un mensaje de restablecimiento de contraseña. Si vienes de un mensaje de restablecimiento de contraseña, por favor asegúrate de que has utilizado la URL completa proporcionada en el mensaje."
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ es-CL:
|
|||
change_password: "Cambiar mi contraseña"
|
||||
new:
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No existe una cuenta asociada con ese email. Si estas esperando una invitación, la enviaremos a la brevedad"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña"
|
||||
no_token: "No puedes acceder a esta página sino viene de un correo electrónico de restablecimiento de contraseña. Si viene de un correo electrónico de restablecimiento de contraseña, por favor asegúrese de que utilizó la URL completa proporcionada."
|
||||
send_instructions: "Recibirás un correo con instrucciones para restablecer tu contraseña en pocos minutos."
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ es-MX:
|
|||
new:
|
||||
email: "Dirección de correo electrónico"
|
||||
forgot_password: "¿Olvidaste tu contraseña?"
|
||||
no_account: "No existe una cuenta con este correo electrónico."
|
||||
reset_password: "Restablecer contraseña"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña."
|
||||
send_instructions: "Recibirás un correo electrónico con instrucciones para restablecer tu contraseña dentro de pocos minutos."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ es:
|
|||
new:
|
||||
email: "Dirección de correo"
|
||||
forgot_password: "¿Has olvidado tu contraseña?"
|
||||
no_account: "No existe una cuenta con ese correo"
|
||||
reset_password: "Resetear contraseña"
|
||||
send_password_instructions: "Envíame instrucciones para restablecer la contraseña"
|
||||
no_token: "No puedes acceder a esta página sin venir un correo de reseteo de contraseña. Si vienes de uno de estos correos, por favor asegúrate de utilizar la URL proporcionada."
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ et:
|
|||
change_password: "Muuda parooli"
|
||||
new:
|
||||
forgot_password: "Unustasid parooli?"
|
||||
no_account: "Sellise e-mailiga kontot pole. Kui sa ootad kutset, siis saadame selle esimesel võimalusel"
|
||||
send_password_instructions: "Saada mulle juhised salasõna lähtestamiseks."
|
||||
send_instructions: "Mõne minuti jooksul saad e-kirja juhistega oma parooli muutmiseks."
|
||||
updated: "Sinu parool on edukalt muudetud. Oled nüüd sisse logitud."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ eu:
|
|||
change_password: "Nire pasahitza aldatu"
|
||||
new:
|
||||
forgot_password: "Pasahitza ahaztu duzu?"
|
||||
no_account: "Ez da konturik e-posta horrekin. Gonbidapen baten zain bazaude, ahal dugun azkarren bidaliko dizugu bat"
|
||||
send_password_instructions: "Bidali iezadazu pasahitzaren berrezarpenerako argibideak"
|
||||
send_instructions: "Hurrengo minutuetan email bat jasoko dituzu pasahitza berrezartzeko argibideekin."
|
||||
updated: "Zure pasahitza arrakastaz aldatu duzu. Autentikatuta zaude orain."
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ fi:
|
|||
new:
|
||||
email: "Sähköpostiosoite"
|
||||
forgot_password: "Unohditko salasanasi?"
|
||||
no_account: "Tunnusta tälle sähköpostiosoitteelle ei ole olemassa."
|
||||
reset_password: "Vaihda salasana"
|
||||
send_password_instructions: "Lähetä minulle salasanan uudelleenasettamisohjeet"
|
||||
send_instructions: "Saat hetken päästä sähköpostiisi ohjeet siitä, miten voit asettaa salasanasi uudelleen."
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ fr:
|
|||
new:
|
||||
email: "Adresse E-mail"
|
||||
forgot_password: "Mot de passe oublié ?"
|
||||
no_account: "Aucun compte n'est associé à cette adresse de courrier électronique."
|
||||
reset_password: "Réinitialiser le mot de passe"
|
||||
send_password_instructions: "Envoyer les instructions de réinitialisation de mot de passe"
|
||||
no_token: "Vous ne pouvez accéder à cette page sans venir d'un e-mail de réinitialisation du mot de passe. Veuillez vérifier que vous avez utiliser l'URL en entier."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ he:
|
|||
new:
|
||||
email: "כתובת דוא\"ל"
|
||||
forgot_password: "שכחת את סיסמתך?"
|
||||
no_account: "לא קיים חשבון עם כתובת דוא״ל זו"
|
||||
reset_password: "איפוס סיסמה"
|
||||
send_password_instructions: "שליחת הנחיות איפוס הססמה אלי"
|
||||
send_instructions: "בעוד מספר דקות תתקבל בתיבת הדוא״ל שלך הודעה עם הנחיות כיצד לאפס את סיסמתך."
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ hu:
|
|||
new:
|
||||
email: "E-mail cím"
|
||||
forgot_password: "Elfelejtetted a jelszavad?"
|
||||
no_account: "Ehhez az e-mail címhez nem tartozik fiók."
|
||||
reset_password: "Jelszó visszaállítása"
|
||||
send_password_instructions: "Új jelszót igénylek"
|
||||
send_instructions: "Néhány perc múlva kapsz egy e-mailt arról, hogyan állíthatod alaphelyzetbe a jelszavadat."
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ hye-classical:
|
|||
new:
|
||||
email: "Էլ․ հասցէ"
|
||||
forgot_password: "Մոռացե՞լ ես գաղտնաբառդ"
|
||||
no_account: "Այս էլ.հասցէով հաշիւ չկայ։"
|
||||
reset_password: "Վերականգնել գաղտնաբառը"
|
||||
send_password_instructions: "Ուղարկէք ինձ գաղտնաբառը փոխելու ցուցումները"
|
||||
no_token: "Այս էջը հասանելի է միայն գաղտնաբառը վերականգնելու յղումով նամակից գալու դէպքում։ Եթէ հէնց այդտեղից է, որ եկել ես, հաւաստիացիր, որ ամբողջական յղումն ես օգտագործել։"
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ hye:
|
|||
new:
|
||||
email: "Էլ․հասցե"
|
||||
forgot_password: "Մոռացե՞լ ես գաղտնաբառդ"
|
||||
no_account: "Այս էլ.հասցեով հաշիվ չկա։"
|
||||
reset_password: "Վերականգնել գաղտնաբառը"
|
||||
send_password_instructions: "Ուղարկեք ինձ գաղտնաբառը փոխելու ցուցումները"
|
||||
no_token: "Այս էջը հասանելի է միայն գաղնաբառը վերականգնելու հղումով նամակից գալու դեպքում։ Եթե հենց այդտեղից է, որ եկել ես, հավաստիացիր, որ ամբողջական հղումն ես օգտագործել։"
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ ia:
|
|||
new:
|
||||
email: "Adresse de e-mail"
|
||||
forgot_password: "Contrasigno oblidate?"
|
||||
no_account: "Nulle conto con iste adresse de e-mail existe."
|
||||
reset_password: "Reinitialisar contrasigno"
|
||||
send_password_instructions: "Inviar instructiones pro reinitialisar contrasigno"
|
||||
no_token: "Tu non pote acceder a iste pagina sin venir ab un e-mail pro reinitialisar contrasigno. Si tu de facto veni ab un e-mail pro reinitialisar contrasigno, per favor assecura te de usar le totalitate del URL fornite."
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ id:
|
|||
change_password: "Ubah kata sandi saya"
|
||||
new:
|
||||
forgot_password: "Lupa kata sandi anda?"
|
||||
no_account: "Tidak ditemukan akun dengan E-mail ini. Jika anda menunggu invitasi (undangan), kami akan menyebarkannya secepatnya"
|
||||
send_password_instructions: "Kirimkan saya instruksi untuk membuat ulang kata sandi"
|
||||
send_instructions: "Anda akan menerima email berisi petunjuk cara membuat ulang kata sandi Anda dalam beberapa menit."
|
||||
updated: "Kata kunci Anda telah berhasil diubah. Anda sekarang sudah masuk."
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue