Commit 8825d827 authored by David Morley's avatar David Morley

Merge remote-tracking branch 'upstream/master'

parents 5f39a9ef 09a425cb
# 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 # 0.7.11.0
## Refactor ## Refactor
......
...@@ -42,6 +42,14 @@ ...@@ -42,6 +42,14 @@
padding: 15px; padding: 15px;
} }
.part-of-diaspora {
font-style: italic;
a {
color: $white;
}
}
.login-form { .login-form {
fieldset { background: none; } fieldset { background: none; }
......
...@@ -16,6 +16,30 @@ ...@@ -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 { .img-responsive {
display: inline; display: inline;
} }
......
.page-registrations.action-new, .page-registrations {
.page-registrations.action-create {
.ball { .ball {
background: image-url('branding/ball.png') no-repeat; background: image-url('branding/ball.png') no-repeat;
background-size: contain; background-size: contain;
...@@ -12,19 +11,24 @@ ...@@ -12,19 +11,24 @@
height: 633px; height: 633px;
} }
@media (max-width: $screen-xs-max) {
.v-center {
height: auto;
}
}
.content { .content {
display: table-cell; display: table-cell;
vertical-align: middle; vertical-align: middle;
h2 { h1 {
font-size: 35px; font-size: 35px;
margin: 12px; margin: 12px 0;
text-align: center;
} }
} }
form { form {
max-width: 400px; max-width: 500px;
} }
.captcha-img { .captcha-img {
...@@ -34,16 +38,13 @@ ...@@ -34,16 +38,13 @@
width: 120px; width: 120px;
} }
.captcha-input { .form-control.captcha-input {
border-bottom: 1px solid $input-border; border-bottom: 1px solid $input-border;
border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;
box-sizing: border-box; box-sizing: border-box;
font-size: 16px;
height: 40px;
line-height: $line-height-base; line-height: $line-height-base;
padding: 10px 10px 10px 130px; padding-left: 130px;
width: 100%;
} }
.terms > a { .terms > a {
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
# the COPYRIGHT file. # the COPYRIGHT file.
class RegistrationsController < Devise::RegistrationsController 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 def create
@user = User.build(user_params) @user = User.build(user_params)
...@@ -28,13 +28,17 @@ class RegistrationsController < Devise::RegistrationsController ...@@ -28,13 +28,17 @@ class RegistrationsController < Devise::RegistrationsController
end end
end end
def registrations_closed
render "registrations/registrations_closed"
end
private private
def check_registrations_open_or_valid_invite! def check_registrations_open_or_valid_invite!
return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?) return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?)
flash[:error] = params[:invite] ? t("registrations.invalid_invite") : t("registrations.closed") flash[:error] = t("registrations.invalid_invite") if params[:invite]
redirect_to new_user_session_path redirect_to registrations_closed_path
end end
def invite def invite
......
...@@ -12,21 +12,21 @@ class SessionsController < Devise::SessionsController ...@@ -12,21 +12,21 @@ class SessionsController < Devise::SessionsController
# rubocop:enable Rails/LexicallyScopedActionFilter # rubocop:enable Rails/LexicallyScopedActionFilter
def find_user def find_user
return User.find(session[:otp_user_id]) if session[:otp_user_id] return User.find_for_authentication(username: params[:user][:username]) if params[:user][:username]
User.find_for_authentication(username: params[:user][:username]) if params[:user][:username] User.find(session[:otp_user_id]) if session[:otp_user_id]
end end
def authenticate_with_2fa def authenticate_with_2fa
self.resource = find_user self.resource = find_user
u = find_user
return true unless u&.otp_required_for_login? return true unless resource&.otp_required_for_login?
if params[:user][:otp_attempt].present? && session[:otp_user_id] if params[:user][:otp_attempt].present? && session[:otp_user_id]
authenticate_with_two_factor_via_otp(u) authenticate_with_two_factor_via_otp(resource)
elsif u&.valid_password?(params[:user][:password]) else
prompt_for_two_factor(u) strategy = Warden::Strategies[:database_authenticatable].new(warden.env, :user)
prompt_for_two_factor(strategy.user) if strategy.valid? && strategy._run!.successful?
end end
end end
......
...@@ -33,7 +33,9 @@ class OpenGraphCache < ApplicationRecord ...@@ -33,7 +33,9 @@ class OpenGraphCache < ApplicationRecord
end end
def fetch_and_save_opengraph_data! 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 return unless object
......
...@@ -591,6 +591,10 @@ class User < ApplicationRecord ...@@ -591,6 +591,10 @@ class User < ApplicationRecord
end end
end end
def remember_me
true
end
private private
def clearable_fields def clearable_fields
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
autocorrect: "off", autocorrect: "off",
aria: {labelledby: "passwordConfirmationLabel"} aria: {labelledby: "passwordConfirmationLabel"}
= hidden_field(:user, :remember_me, value: 1)
= f.submit t("devise.passwords.edit.change_password"), class: "btn btn-block btn-primary" = f.submit t("devise.passwords.edit.change_password"), class: "btn btn-block btn-primary"
.text-center .text-center
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
.row .row
.col-md-8.text-center .col-md-8.text-center
%h1= t("home.default.headline", pod_name: pod_name) %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") %h2= t("home.default.byline")
.col-md-4.login-form .col-md-4.login-form
= render partial: "sessions/form", locals: {mobile: false, resource: User.new, resource_name: :user} = render partial: "sessions/form", locals: {mobile: false, resource: User.new, resource_name: :user}
......
%ul.nav.navbar-nav.navbar-right %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" %li= link_to t("devise.shared.links.sign_up"), new_user_registration_path, class: "login"
- unless current_page?(controller: "/sessions", action: :new) - unless current_page?(controller: "/sessions", action: :new)
%li= link_to t("devise.shared.links.sign_in"), new_user_session_path, class: "login" %li= link_to t("devise.shared.links.sign_in"), new_user_session_path, class: "login"
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
- if mobile - if mobile
%legend %legend
= image_tag("branding/logos/header-logo2x.png", height: 40, width: 40) = image_tag("branding/logos/header-logo2x.png", height: 40, width: 40)
= t("aspects.aspect_stream.make_something") = AppConfig.settings.pod_name
- if mobile - if mobile
= f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel" = f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel"
......
%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"))
#registration #registration
.container .container
.row .row
.col-md-10.offset1 .col-sm-6.hidden-xs
.col-md-7.hidden-phone .ball
%h1.ball .col-sm-6.col-xs-12.v-center
.col-md-5.v-center .content.text-center
.content.text-center %h1#pod-name
%h2#pod-name = AppConfig.settings.pod_name
= AppConfig.settings.pod_name
= render partial: "form", locals: {mobile: false} = render partial: "form", locals: {mobile: false}
#registration
.container
.row
.col-sm-6.hidden-xs
.ball
.col-sm-6.col-xs-12.v-center
.content
= render partial: "registrations_closed"
.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 @@ ...@@ -40,5 +40,4 @@
autocorrect: "off", autocorrect: "off",
aria: {labelledby: "passwordLabel"} 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" = f.submit t("devise.sessions.new.sign_in"), class: "btn btn-large btn-block btn-primary"
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
defaults: defaults:
version: version:
number: "0.7.11.0" # Do not touch unless doing a release, do not backport the version number that's in master number: "0.7.12.0" # Do not touch unless doing a release, do not backport the version number that's in master
heroku: false heroku: false
environment: environment:
url: "http://localhost:3000/" url: "http://localhost:3000/"
......
...@@ -15,11 +15,6 @@ end ...@@ -15,11 +15,6 @@ end
# Use this hook to configure devise mailer, warden hooks and so forth. # Use this hook to configure devise mailer, warden hooks and so forth.
# Many of these configuration options can be set straight in your model. # Many of these configuration options can be set straight in your model.
Devise.setup do |config| Devise.setup do |config|
config.warden do |manager|
manager.default_strategies(scope: :user).unshift :two_factor_authenticatable
manager.default_strategies(scope: :user).unshift :two_factor_backupable
end
# The secret key used by Devise. Devise uses this key to generate # The secret key used by Devise. Devise uses this key to generate
# random tokens. Changing this key will render invalid all existing # random tokens. Changing this key will render invalid all existing
# confirmation, reset password and unlock tokens in the database. # confirmation, reset password and unlock tokens in the database.
......
...@@ -86,7 +86,7 @@ pt-BR: ...@@ -86,7 +86,7 @@ pt-BR:
remember_me: "Lembre-se de mim" remember_me: "Lembre-se de mim"
sign_in: "Entrar" sign_in: "Entrar"
username: "Nome de usuário" username: "Nome de usuário"
signed_in: "Você entrou com sucesso." signed_in: "Você entrou."
signed_out: "Você saiu com sucesso." signed_out: "Você saiu com sucesso."
shared: shared:
links: links:
......
...@@ -442,7 +442,6 @@ ar: ...@@ -442,7 +442,6 @@ ar:
updated: "تم تحديث ملفك الشخصى" updated: "تم تحديث ملفك الشخصى"
public: "عامّ" public: "عامّ"
registrations: registrations:
closed: "التسجيلات مغلقة على هذه المنصة"
create: create:
success: "لقد انضممت الى دياسبرا " success: "لقد انضممت الى دياسبرا "
new: new:
......
...@@ -15,7 +15,7 @@ be: ...@@ -15,7 +15,7 @@ be:
contact: contact:
attributes: attributes:
person_id: person_id:
taken: "павінна быць унікальным у кантактах гэтага карыстальніка." taken: "мусіць быць унікальным у кантактах гэтага карыстальніка."
person: person:
attributes: attributes:
diaspora_handle: diaspora_handle:
...@@ -23,7 +23,7 @@ be: ...@@ -23,7 +23,7 @@ be:
reshare: reshare:
attributes: attributes:
root_guid: root_guid:
taken: "Добра, але гэта ты ўжо перапосціў!" taken: "Падабаецца? Але ты ўжо падзяліуся гэтым!"
user: user:
attributes: attributes:
email: email:
...@@ -33,42 +33,52 @@ be: ...@@ -33,42 +33,52 @@ be:
username: username:
invalid: "Памылка. Дазваляюцца літары, лічбы і падкрэсліванні." invalid: "Памылка. Дазваляюцца літары, лічбы і падкрэсліванні."
taken: "ужо існуе." taken: "ужо існуе."
all_aspects: "усе катыгорыі" all_aspects: "Усе аспекты"
are_you_sure: "сапраўды?" are_you_sure: "сапраўды?"
are_you_sure_delete_account: "Вы сапраўды хочаце выдаліць Ваш акаўнт? Гэта не магчыма будзе адмяніць!" are_you_sure_delete_account: "Вы сапраўды жадаеце выдаліць Ваш акаўнт? Гэта не магчыма будзе адмяніць!"
aspects: aspects:
add_to_aspect: add_to_aspect:
failure: "Памылка пры спробе дадаць кантакты да аспекта." failure: "Памылка пры спробе дадаць кантакты да аспекта."
success: "Кантакты паспяхова дададзены ў аспект." success: "Кантакты паспяхова дададзены ў аспект."
aspect_listings: aspect_listings:
add_an_aspect: "+ дадаць катыгорыю" add_an_aspect: "+ дадаць катыгорыю"
aspect_stream:
stay_updated: "Заўжды на сувязі"
destroy: destroy:
failure: "%{name} не пустая і не можа быць выдалена." failure: "%{name} не магчыма выдаліць."
success: "%{name} паспяхова выдалена" success: "%{name} паспяхова выдалена"
edit: edit:
aspect_list_is_not_visible: "спіс катыгорый не бачны для ўсіх" aspect_list_is_not_visible: "Кантакты ў гэтым аспекце ня бачны нікому"
aspect_list_is_visible: "спіс катыгорый бачны для ўсіх" aspect_list_is_visible: "Кантакты ў гэтым аспекце бачны для ўсіх"
confirm_remove_aspect: "ты сапраўды жадаешь выдаліць гэтую катыгорыю?" confirm_remove_aspect: "ты сапраўды жадаешь выдаліць гэтую катыгорыю?"
rename: "перайменаваць" rename: "перайменаваць"
update: "абнавіць" update: "аднавіць"
updating: "абнаўляю ..." updating: "аднаўляю ..."
index: index:
donate: "падзяка" donate: "падзяка"
help: help:
do_you: "Гэта тычыцца:" do_you: "Гэта тычыцца:"
here_to_help: "Супольнасці Diaspora тут!" feature_suggestion: "... жадаеце нешта %{link} прапанаваць?"
need_help: "дапамога патрэбна?" find_a_bug: "... знайшлі %{link}?"
have_a_question: "... маеце %{link}?"
here_to_help: "Суполка Дыаспара* заўсёды побач!"
need_help: "Патрэбна дапамога?"
tag_bug: "памылка" tag_bug: "памылка"
tag_feature: "функцыя"
tag_question: "пытанне" tag_question: "пытанне"
introduce_yourself: "Гэта ваша ручаіна. Скокайце ды пакажыце сябе."
new_here: new_here:
follow: "Сачы за %{link} і вітай новых карыстальнікаў diaspora*!" follow: "Сачы за %{link} і вітай новых карыстальнікаў diaspora*!"
learn_more: "паказаць больш" learn_more: "паказаць больш"
title: "Прывітанне, Новы Ўдзельнік!(чалавек)" title: "Прывітай новых удзельнікаў"
services:
content: "Вы можаце дадаць наступныя паслугі ў diaspora*:"
heading: "Далучыць паслугі"
welcome_to_diaspora: "Вітаем ў Diaspora, %{name}!" welcome_to_diaspora: "Вітаем ў Diaspora, %{name}!"
no_contacts_message: no_contacts_message:
community_spotlight: "супольны прагляд" community_spotlight: "Рэкамендуемыя удзельнікі"
or_spotlight: "ты можаш таксама падзяліцца %{link}" or_spotlight: "ты можаш таксама падзяліцца %{link}"
try_adding_some_more_contacts: "ты можаш знайсці ці дадаць новыя катракты" try_adding_some_more_contacts: "ты можаш знайсці ці %{invite_link} новыя кантакты."
you_should_add_some_more_contacts: "спачатку дадай пару кантактаў" you_should_add_some_more_contacts: "спачатку дадай пару кантактаў"
seed: seed:
acquaintances: "знаёмыя" acquaintances: "знаёмыя"
...@@ -79,13 +89,31 @@ be: ...@@ -79,13 +89,31 @@ be:
failure: "не магчыма захаваць катыгорыю %{name}, занадта дліная назва." failure: "не магчыма захаваць катыгорыю %{name}, занадта дліная назва."
success: "катыгорыя %{name} была паспяхова выдалена" success: "катыгорыя %{name} была паспяхова выдалена"
cancel: "адмяніць" cancel: "адмяніць"
comments:
new_comment:
comment: "Каментарыі"
commenting: "Каменціраванне"
contacts: contacts:
index: index:
all_contacts: "усе кантакты" all_contacts: "Усе кантакты"
my_contacts: "Мае кантакты"
start_a_conversation: "Пачаць гутарку"
title: "Кантакты"
conversations: conversations:
create:
fail: "Памылковае паведамленне"
sent: "Паведамленне даслана"
index:
inbox: "Уваходныя"
no_messages: "Няма паведамленняў"
new: new:
send: "даслаць" send: "даслаць"
sending: "адсылаю ..." sending: "адсылаю ..."
subject: "Тэма"
show:
delete: "Выдаліць гутарку"
reply: "Адачаць"
replying: "Адказваем..."
delete: "выдаліць" delete: "выдаліць"
email: "Email" email: "Email"
error_messages: error_messages:
...@@ -93,16 +121,33 @@ be: ...@@ -93,16 +121,33 @@ be:
correct_the_following_errors_and_try_again: "спраўляй памылкі і паспрабуй зноў." correct_the_following_errors_and_try_again: "спраўляй памылкі і паспрабуй зноў."
fill_me_out: "запоўні мяне" fill_me_out: "запоўні мяне"
find_people: "Пошук людзей ці #тэгаў" find_people: "Пошук людзей ці #тэгаў"
help:
aspects:
title: "Аспекты"
what_is_an_aspect_q: "Што такое аспект?"
invitations: invitations:
create:
no_more: "Больш няма запрашенняў"
new: new:
invite_someone_to_join: "запрасі каго-небудзь да Diaspora!" invite_someone_to_join: "Запрасі яшчэ кагосці да Diaspora*!"
language: "мова" language: "мова"
send_an_invitation: "Даслаць запрашэнне"
layouts: layouts:
application:
powered_by: "Заснавана на diaspora*"
whats_new: "Што новага?"
header: header:
code: "Код"
logout: "Выйсці"
profile: "Профіль"
settings: "налады" settings: "налады"
limited: "абмежавана" limited: "абмежавана"
more: "больш" more: "больш"
no_results: "нічога не знайшлось" no_results: "Нічога не знайшлось"
notifier:
click_here: "Націсні сюды"
hello: "Вітаем, %{name}!"
thanks: "Дзякуй,"
nsfw: "не дзеля ўсіх вачэй" nsfw: "не дзеля ўсіх вачэй"
ok: "ok" ok: "ok"
privacy: "Прыватнасць" privacy: "Прыватнасць"
...@@ -110,4 +155,11 @@ be: ...@@ -110,4 +155,11 @@ be:
public: "адкрыта" public: "адкрыта"
search: "Пошук" search: "Пошук"
settings: "Налады" settings: "Налады"
username: "Імя карыстальніка" streams:
\ No newline at end of file aspects:
title: "Мае аспекты"
aspects_stream: "Аспекты"
username: "Імя карыстальніка"
users:
edit:
auto_follow_aspect: "Дадаваць гэтых карыстальнікаў у аспект:"
\ No newline at end of file
...@@ -404,7 +404,6 @@ bg: ...@@ -404,7 +404,6 @@ bg:
updated: "Профилът е обновен" updated: "Профилът е обновен"
public: "Публична" public: "Публична"
registrations: registrations:
closed: "Нови регистрации не са възможни на този pod на Diaspora."
create: create:
success: "Вие се присъединихте към Diaspora!" success: "Вие се присъединихте към Diaspora!"
invalid_invite: "Връзката за покана, която предоставихте, вече не е валидна!" invalid_invite: "Връзката за покана, която предоставихте, вече не е валидна!"
......
...@@ -505,7 +505,6 @@ br: ...@@ -505,7 +505,6 @@ br: