Fixed #332 Allow users to reset their password (#335)

* <Added password reset system>

* <Added rspec tests>

* <Fixed code style>

* <Added rescue for invalid smtp configuration>
This commit is contained in:
John Ma
2018-12-21 11:56:52 -05:00
committed by Jesus Federico
parent e3389c84d1
commit 8fe66d81f1
15 changed files with 513 additions and 3 deletions

View File

@ -0,0 +1,50 @@
<%
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%>
<% unless flash.empty? %>
<%= render "shared/error_banner" do %>
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "flash #{key} d-inline" %>
<% end %>
<% end %>
<% end %>
<div class="container">
<div class="row pt-7">
<div class="col col-4 offset-4">
<div class="card">
<div class="card-header background">
<h4 class="mt-2"><%= t("reset_password.subtitle") %></h4>
</div>
<div class="card-body background">
<%= form_for(@user, url: password_reset_path(params[:id])) do |f| %>
<%= hidden_field_tag :email, @user.email %>
<%= f.label t('reset_password.password'), class: "form-label" %>
<%= f.password_field :password, class: 'form-control' %>
<br>
<%= f.label t('reset_password.confirm'), class: "form-label" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<br>
<%= f.submit t('reset_password.update'), class: "btn btn-primary" %>
<% end %>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,43 @@
<%
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%>
<% unless flash.empty? %>
<%= render "shared/error_banner" do %>
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "flash #{key} d-inline" %>
<% end %>
<% end %>
<% end %>
<div class="container">
<div class="row pt-7">
<div class="col col-4 offset-4">
<div class="card">
<div class="card-header background">
<h4 class="mt-2"><%= t("forgot_password.subtitle") %></h4>
</div>
<div class="card-body background">
<%= form_for(:password_reset, url: password_resets_path) do |f| %>
<%= f.label t("forgot_password.email"), class: "form-label" %>
<%= f.email_field :email, class: "form-control" %>
<br>
<%= f.submit t("forgot_password.submit"), class: "btn btn-primary" %>
<% end %>
</div>
</div>
</div>
</div>
</div>

View File

@ -55,6 +55,13 @@
<%= f.password_field :password, class: "form-control", placeholder: t("password"), value: "" %>
</div>
</div>
<% if Rails.configuration.enable_email_verification %>
<div class="form-group">
<div class="input-icon">
<%= link_to t("modal.login.forgot_password"), new_password_reset_path %>
</div>
</div>
<% end %>
<div class="form-footer">
<%= f.submit t("login"), class: "btn btn-outline-primary btn-block btn-pill" %>
</div>

View File

@ -0,0 +1,32 @@
<%
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
#
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%>
<h1>Password reset</h1>
<p>Please click the link below to reset your password:</p>
<%= link_to "Reset password", edit_password_reset_url(@user.reset_token,
email: @user.email,
host: @url) %>
<p>This link will expire in two hours.</p>
<p>
If you did not request your password to be reset, please ignore this email and
your password will not be changed.
</p>

View File

@ -0,0 +1,26 @@
<%
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
#
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%>
Please click the link below to reset your password:
<%= edit_password_reset_url(@user.reset_token, email: @user.email, host: @url) %>
This link will expire in two hours.
If you did not request your password to be reset, please ignore this email and
your password will not be changed.