Skip to content

Commit

Permalink
fix: fix password resetting page (#3156)
Browse files Browse the repository at this point in the history
  • Loading branch information
asbiin authored Nov 3, 2019
1 parent a4417f3 commit 91dd6e9
Show file tree
Hide file tree
Showing 16 changed files with 188 additions and 183 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

### Fixes:

* Fix password resetting page
* Fix email verification sending on test environments
* Fix contact export
* Fix currencies seeder by accounting for defaults
* Fix search when prefix table is used
Expand Down
8 changes: 6 additions & 2 deletions app/Models/User/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
use App\Models\Settings\Currency;
use Illuminate\Support\Facades\DB;
use Laravel\Passport\HasApiTokens;
use App\Notifications\ConfirmEmail;
use Illuminate\Support\Facades\App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Validation\UnauthorizedException;
use Illuminate\Database\Eloquent\Relations\HasOne;
Expand Down Expand Up @@ -489,6 +489,10 @@ public function getNameOrderForForms(): string
*/
public function sendEmailVerificationNotification()
{
$this->notify(new ConfirmEmail(true));
/** @var int $count */
$count = Account::count();
if (config('monica.signup_double_optin') && $count > 1) {
$this->notify(new VerifyEmail());
}
}
}
81 changes: 0 additions & 81 deletions app/Notifications/ConfirmEmail.php

This file was deleted.

47 changes: 47 additions & 0 deletions app/Notifications/EmailMessaging.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace App\Notifications;

use App\Models\User\User;
use Illuminate\Support\Facades\App;
use Illuminate\Notifications\Messages\MailMessage;

class EmailMessaging
{
/**
* Get the mail representation to verify an email.
*
* @param User $user
* @return MailMessage
*/
public static function verifyEmailMail(User $user, $verificationUrl) : MailMessage
{
App::setLocale($user->locale);

return (new MailMessage)
->subject(trans('mail.confirmation_email_title'))
->line(trans('mail.confirmation_email_title'))
->line(trans('mail.confirmation_email_intro'))
->action(trans('mail.confirmation_email_button'), $verificationUrl)
->line(trans('mail.confirmation_email_bottom'));
}

/**
* Get the mail representation to reset a password.
*
* @param User $user
* @return MailMessage
*/
public static function resetPasswordMail(User $user, $token) : MailMessage
{
App::setLocale($user->locale);

return (new MailMessage)
->subject(trans('mail.password_reset_title'))
->line(trans('mail.password_reset_title'))
->line(trans('mail.password_reset_intro'))
->action(trans('mail.password_reset_button'), url(config('app.url').route('password.reset', ['token' => $token, 'email' => $user->getEmailForPasswordReset()], false)))
->line(trans('mail.password_reset_expiration', ['count' => config('auth.passwords.'.config('auth.defaults.passwords').'.expire')]))
->line(trans('mail.password_reset_bottom'));
}
}
10 changes: 10 additions & 0 deletions app/Providers/AppServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
use Laravel\Cashier\Cashier;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\View;
use App\Notifications\EmailMessaging;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Auth\Notifications\ResetPassword;

class AppServiceProvider extends ServiceProvider
{
Expand Down Expand Up @@ -35,6 +38,13 @@ public function boot()
&& ! DBHelper::testVersion('5.7.7')) {
Schema::defaultStringLength(191);
}

VerifyEmail::toMailUsing(function ($user, $verificationUrl) {
return EmailMessaging::verifyEmailMail($user, $verificationUrl);
});
ResetPassword::toMailUsing(function ($user, $token) {
return EmailMessaging::resetPasswordMail($user, $token);
});
}

/**
Expand Down
2 changes: 1 addition & 1 deletion public/css/app-ltr.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/css/app-rtl.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/js/langs/en.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/js/vendor.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions public/mix-manifest.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"/js/manifest.js": "/js/manifest.js?id=7db827d654313dce4250",
"/js/vendor.js": "/js/vendor.js?id=96e2fbd4bfedfce9db0b",
"/js/vendor.js": "/js/vendor.js?id=7d9eac3297bd9b98aea7",
"/js/app.js": "/js/app.js?id=864afcaa74a8b0a0e960",
"/css/app-ltr.css": "/css/app-ltr.css?id=4c422705d8870d992014",
"/css/app-rtl.css": "/css/app-rtl.css?id=a5a64c456c70a9fa8726",
"/css/app-ltr.css": "/css/app-ltr.css?id=b8d91b97ee76f455fa75",
"/css/app-rtl.css": "/css/app-rtl.css?id=53ee9d1103dbb6a9c87b",
"/css/stripe.css": "/css/stripe.css?id=76c70a7b11ae5f38a725",
"/js/stripe.js": "/js/stripe.js?id=5e5e1d73338a536f7ce9",
"/js/u2f-api.js": "/js/u2f-api.js?id=1948d3efdfd801bed14a"
Expand Down
8 changes: 8 additions & 0 deletions resources/lang/en/mail.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,12 @@
'confirmation_email_title' => 'Monica – Email verification',
'confirmation_email_intro'=> 'To validate your email click on the button below',
'confirmation_email_button' => 'Verify email address',
'confirmation_email_bottom' => 'If you did not create an account, no further action is required.',

'password_reset_title' => 'Monica – Reset Password Notification',
'password_reset_intro' => 'You are receiving this email because we received a password reset request for your account.',
'password_reset_button' => 'Reset Password',
'password_reset_expiration' => 'This password reset link will expire in :count minutes.',
'password_reset_bottom' => 'If you did not request a password reset, no further action is required.',

];
53 changes: 21 additions & 32 deletions resources/views/auth/passwords/email.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,33 @@
<body class="marketing register">
<div class="container">
<div class="row">
<div class="col-md-8 offset-md-2">
<div class="card">
<div class="card-block">
<div class="card-title">{{ trans('auth.password_reset_title') }}</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<div class="col-12 col-md-6 offset-md-3 offset-md-3-right">

<form class="form-horizontal" role="form" method="POST" action="{{ '/password/email' }}">
@csrf
<div class="signup-box">
<h2>{{ trans('auth.password_reset_title') }}</h2>

<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 col-form-label">{{ trans('auth.password_reset_email') }}</label>
@include ('partials.errors')
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif

<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">
<form action="{{ route('password.email') }}" method="post">
@csrf

@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<label for="email">{{ trans('auth.password_reset_email') }}</label>
<input type="email" class="form-control" id="email" name="email" value="{{ $email ?? old('email') }}">
</div>

<div class="form-group">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-envelope"></i>&nbsp;{{ trans('auth.password_reset_send_link') }}
</button>
</div>
</div>
</form>
</div>
<div class="form-group actions">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-envelope"></i>&nbsp;{{ trans('auth.password_reset_send_link') }}
</button>
</div>

</form>
</div>
</div>
</div>
Expand Down
87 changes: 30 additions & 57 deletions resources/views/auth/passwords/reset.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,73 +3,46 @@
@section('content')
<body class="marketing register">
<div class="container">
<div class="row">
<div class="col-12 col-md-6 offset-md-3 offset-md-3-right">

<div class="row">
<div class="col-md-8 offset-md-2">
<div class="card">
<div class="card-block">
<div class="card-title">{{ trans('auth.password_reset_title') }}</div>
<div class="signup-box">
<h2>{{ trans('auth.password_reset_title') }}</h2>

<div class="panel-body">
<form class="form-horizontal" role="form" method="POST" action="{{ '/password/reset' }}">
@csrf
@include ('partials.errors')

<input type="hidden" name="token" value="{{ $token }}">
<form action="{{ route('password.update') }}" method="post">
@csrf

<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 col-form-label">{{ trans('auth.password_reset_email') }}</label>
<input type="hidden" name="token" value="{{ $token }}">

<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ $email ?? old('email') }}">

@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>

<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password" class="col-md-4 col-form-label">{{ trans('auth.password_reset_password') }}</label>

<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password">

@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>

<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
<label for="password-confirm" class="col-md-4 col-form-label">{{ trans('auth.password_reset_password_confirm') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation">
<div class="form-group">
<label for="email">{{ trans('auth.password_reset_email') }}</label>
<input type="email" class="form-control" id="email" name="email" value="{{ $email ?? old('email') }}" required autocomplete="email" autofocus>
</div>

<div class="form-group{{ $errors->has('password') ? ' is-invalid' : '' }}">
<label for="password">{{ trans('auth.password_reset_password') }}</label>
<input type="password" class="form-control" id="password" name="password" required autocomplete="new-password">
</div>

@if ($errors->has('password_confirmation'))
<span class="help-block">
<strong>{{ $errors->first('password_confirmation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<label for="password-confirm">{{ trans('auth.password_reset_password_confirm') }}</label>
<input type="password" class="form-control" id="password-confirm" name="password_confirmation" required autocomplete="new-password">
</div>

<div class="form-group">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-refresh"></i>&nbsp;{{ trans('auth.password_reset_action') }}
</button>
</div>
</div>
</form>
</div>
<div class="form-group actions">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-refresh"></i>&nbsp;{{ trans('auth.password_reset_action') }}
</button>
</div>
</div>
</div>

</form>
</div>
</div>
</div>

</div>
</body>
Expand Down
Loading

0 comments on commit 91dd6e9

Please sign in to comment.