Login page fixes and UI cleanup

This commit is contained in:
Pinga 2023-11-21 16:40:05 +02:00
parent a8be1a3c30
commit 7fc56f3866
8 changed files with 34 additions and 952 deletions

View file

@ -15,68 +15,6 @@ use Psr\Http\Message\ServerRequestInterface as Request;
*/ */
class AuthController extends Controller class AuthController extends Controller
{ {
/**
* @param Request $request
* @param Response $response
* @return mixed
* @throws \DI\DependencyException
* @throws \DI\NotFoundException
*/
public function createRegister(Request $request, Response $response){
return view($response,'auth/register.twig');
}
/**
* @param Request $request
* @param Response $response
* @return Response
* @throws \DI\DependencyException
* @throws \DI\NotFoundException
* @throws \Pinga\Auth\AuthError
*/
public function register(Request $request, Response $response){
$validation = $this->validator->validate($request, [
'email' => v::noWhitespace()->notEmpty()->email(),
'username' => v::noWhitespace()->notEmpty()->alnum(),
'password' => v::notEmpty()->stringType()->length(8),
]);
if ($validation->failed()) {
redirect()->route('register');
//or
//return $response->withHeader('Location', route('register'));
}
$data = $request->getParsedBody();
$auth =Auth::create($data['email'],$data['password'],$data['username']);
if($auth) {
$msg = '<a href="'.route('verify.email.resend',[],['email'=>$data['email']]).'">Resend email</a>';
flash('success', 'We have send you a verification link to '.$data['email'].' <br>'.$msg);
return $response->withHeader('Location', route('login'));
}
}
/**
* @param Request $request
* @param Response $response
*/
public function verifyEmailResend(Request $request, Response $response){
$data = $request->getQueryParams();
Auth::ResendVerification($data['email']);
}
/**
* @param Request $request
* @param Response $response
* @throws \Pinga\Auth\AuthError
*/
public function verifyEmail(Request $request, Response $response){
//confirm email
$data = $request->getQueryParams();
Auth::verifyEmail($data['selector'], $data['token']);
}
/** /**
* @param Request $request * @param Request $request
* @param Response $response * @param Response $response

View file

@ -117,7 +117,7 @@
<!-- Verification Code Input --> <!-- Verification Code Input -->
<div class="mb-3"> <div class="mb-3">
<label for="verificationCode" class="form-label">Verification Code</label> <label for="verificationCode" class="form-label">Verification Code</label>
<input type="text" class="form-control" id="verificationCode" name="verificationCode" placeholder="Enter code"> <input type="number" class="form-control" id="verificationCode" name="verificationCode" placeholder="Enter code">
<small class="form-text text-muted"> <small class="form-text text-muted">
Enter the code generated by your authentication app. This code verifies that your 2FA setup is working correctly. Once entered, click 'Save 2FA Settings' to activate two-factor authentication for your account. Enter the code generated by your authentication app. This code verifies that your 2FA setup is working correctly. Once entered, click 'Save 2FA Settings' to activate two-factor authentication for your account.
</small> </small>

View file

@ -18,7 +18,7 @@
<label class="form-label">Email address</label> <label class="form-label">Email address</label>
<input name="email" type="email" class="form-control" placeholder="your@email.com" autocomplete="off"> <input name="email" type="email" class="form-control" placeholder="your@email.com" autocomplete="off">
</div> </div>
<div class="mb-2"> <div class="mb-3">
<label class="form-label"> <label class="form-label">
Password Password
<span class="form-label-description"> <span class="form-label-description">
@ -33,6 +33,10 @@
</span> </span>
</div> </div>
</div> </div>
<div class="mb-2">
<label class="form-label">2FA Code</label>
<input name="code" type="number" class="form-control" autocomplete="off">
</div>
<div class="mb-2"> <div class="mb-2">
<label class="form-check"> <label class="form-check">
<input name="remember" value="remember" id="remember" type="checkbox" class="form-check-input"/> <input name="remember" value="remember" id="remember" type="checkbox" class="form-check-input"/>
@ -44,9 +48,15 @@
</div> </div>
</form> </form>
</div> </div>
<div class="hr-text">or</div>
<div class="card-body">
<div class="row">
<div class="col"><a href="#" class="btn btn-secondary w-100">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z" /><path d="M15 9h.01" /></svg>
Login with WebAuthn
</a></div>
</div>
</div> </div>
<div class="text-center text-muted mt-3">
Don't have account yet? <a href="{{route('register')}}" tabindex="-1">Sign up</a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,236 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Confirm Email</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
.ReadMsgBody {
width: 100%;
}
.ExternalClass {
width: 100%;
}
.ExternalClass * {
line-height: 100%;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
@-ms-viewport {
width: 320px;
}
@viewport {
width: 320px;
}
}
</style>
<!--<![endif]-->
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
}
}
</style>
<style type="text/css">
</style>
</head>
<body style="background-color:#f9f9f9;">
<div style="background-color:#f9f9f9;">
<!--[if mso | IE]>
<table align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600">
<tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#f9f9f9;background-color:#f9f9f9;Margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#f9f9f9;background-color:#f9f9f9;width:100%;">
<tbody>
<tr>
<td style="border-bottom:#333957 solid 5px;direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600">
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#fff;background-color:#fff;Margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#fff;background-color:#fff;width:100%;">
<tbody>
<tr>
<td style="border:#dddddd solid 1px;border-top:0px;direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="vertical-align:bottom;width:600px;">
<![endif]-->
<div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:bottom;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:bottom;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:64px;">
<img height="auto" src="https://i.imgur.com/KO1vcE9.png" style="border:0;display:block;outline:none;text-decoration:none;width:100%;" width="64" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-bottom:40px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:32px;font-weight:bold;line-height:1;text-align:center;color:#555;">
Please confirm your email
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-bottom:20px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:22px;text-align:center;color:#555;">
Follow the link bellow to verify your email address to start using
<br>
<b>{app_name}</b>
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-top:30px;padding-bottom:40px;word-break:break-word;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#2F67F6" role="presentation" style="border:none;border-radius:3px;color:#ffffff;cursor:auto;padding:15px 25px;" valign="middle">
<p style="background:#2F67F6;color:#ffffff;font-family:'Helvetica Neue',Arial,sans-serif;font-size:15px;font-weight:normal;line-height:120%;Margin:0;text-decoration:none;text-transform:none;">
<a href="{link}" style="color: #ffffff; text-decoration: none">Confirm Your Email</a>
</p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-bottom:0;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:22px;text-align:center;color:#555;">
Or verify using this link:
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-bottom:40px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:22px;text-align:center;color:#555;">
<a href="{link}" style="color:#2F67F6">{link}</a>
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:22px;text-align:center;color:#555;">
Please send and feedback or bug info<br> to <a href="mailto:info@example.com" style="color:#2F67F6">info@example.com</a>
</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600">
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View file

@ -1,216 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;"><title>Alsco Forms</title><style>
body{width: 100%; background-color: #f0f0f0; margin:0; padding:0; mso-margin-top-alt:0px; mso-margin-bottom-alt:0px; mso-padding-alt: 0px 0px 0px 0px;}
p,h1,h2,h3,h4{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;}
span.preheader{display: none; font-size: 1px;}
html{width: 100%;}
table{font-size: 12px;border: 0;}
.menu-space{padding-right:25px;}
a,a:hover { text-decoration:none; color:#FFF;}
@media only screen and (max-width:640px)
{
body{width:auto!important;}
table[class=main] {width:440px !important;}
table[class=two-left] {width:420px !important; margin:0px auto;}
table[class=full] {width:100% !important; margin:0px auto;}
table[class=alaine] { text-align:center;}
table[class=menu-space] {padding-right:0px;}
table[class=banner] {width:438px !important;}
table[class=menu] {width:438px !important; margin:0px auto; border-bottom:#e1e0e2 solid 1px;}
table[class=date] {width:438px !important; margin:0px auto; text-align:center;}
table[class=two-left-inner] {width:400px !important; margin:0px auto;}
table[class=menu-icon] { display:block;}
table[class=two-left-menu] {text-align:center;}
}
@media only screen and (max-width:479px)
{
body{width:auto!important;}
table[class=main] {width:310px !important;}
table[class=two-left] {width:300px !important; margin:0px auto;}
table[class=full] {width:100% !important; margin:0px auto;}
table[class=alaine] { text-align:center;}
table[class=menu-space] {padding-right:0px;}
table[class=banner] {width:308px !important;}
table[class=menu] {width:308px !important; margin:0px auto; border-bottom:#e1e0e2 solid 1px;}
table[class=date] {width:308px !important; margin:0px auto; text-align:center;}
table[class=two-left-inner] {width:280px !important; margin:0px auto;}
table[class=menu-icon] { display:none;}
table[class=two-left-menu] {width:310px !important; margin:0px auto;}
}
</style>
</head>
<body marginwidth="0" marginheight="0" style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; width: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;" offset="0" topmargin="0" leftmargin="0"><table width="100%" bgcolor="#f0f0f0" border="0" cellspacing="0" cellpadding="0" data-module="notemail-1" data-bgcolor="BodyBg">
<tr>
<td align="center" valign="middle">
<!--Top Space Start-->
<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">
<table width="600" align="center" class="main" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="40" align="center" valign="middle" style="line-height:40px; font-size:40px;">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--Top Space End-->
<!--Logo Part Start-->
<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">
<table width="600" align="center" class="main" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle">
<table width="165" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle">
<a href="#"><img style="width: 200px;" alt="" src="{{url()}}"></a>
</td>
</tr>
<tr>
<td height="10" align="center" valign="middle" style="line-height:10px; font-size:10px;">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--Logo Part End-->
<!--Content Part Start-->
<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">
<table width="600" align="center" class="main" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle" bgcolor="#ffffff">
<table width="350" class="two-left-inner" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="80" align="center" valign="middle" style="line-height:80px; font-size:80px;">&nbsp;
</td>
</tr>
<tr>
<td height="20" align="center" valign="middle" style="line-height:20px; font-size:20px;">&nbsp;
</td>
</tr>
<tr>
<td align="center" valign="middle" style="font-family: Cambria, 'Hoefler Text', 'Liberation Serif', Times, 'Times New Roman', 'serif'; font-size: 18px">
<h3 style="padding-bottom: 20px">Email verification</h3>
<p>Follow the link bellow to verify your email address:</p><br>
<p><a href="{link}" style="color: blue">Click Verify email</a> </p><br>
<p>Or copy the link to your browser: <a href="{link}" style="color: blue">{link}</a></p>
</td>
</tr>
<tr>
<td height="90" align="center" valign="middle" style="line-height:90px; font-size:90px;">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--Content Part End-->
<!--Profile Part Start-->
<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">
<table width="600" align="center" class="main" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="middle" style="border-radius: 0px 0px 8px 8px; background-color: rgb(193, 24, 107); -moz-border-radius: 0px 0px 8px 8px;" bgcolor="#18c197" data-bgcolor="theme-bg">
<table width="170" align="left" class="full" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top">
<table width="120" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle">&nbsp;
</td>
</tr>
<tr>
<td align="center" valign="middle">
<table width="120" align="left" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="35" align="left" valign="top">
</td>
<td width="85" align="center" valign="middle" style="font-family:'Open Sans', Verdana, Arial; font-size:15px; color:#FFF; font-weight:normal; text-transform:uppercase; line-height:28px;">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="middle">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="410" align="right" class="full" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top">
<table width="205" align="left" class="full" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top" bgcolor="#5d5650" data-bgcolor="theme-bg2">
</td>
</tr>
</table>
<table width="175" align="right" class="full" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top">
<table width="120" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle">&nbsp;
</td>
</tr>
<tr>
<td align="center" valign="middle">
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--Copyright Part End-->
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

View file

@ -1,348 +0,0 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
.ReadMsgBody {
width: 100%;
}
.ExternalClass {
width: 100%;
}
.ExternalClass * {
line-height: 100%;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if !mso]><!-->
<style type="text/css">
@media only screen and (max-width:480px) {
@-ms-viewport {
width: 320px;
}
@viewport {
width: 320px;
}
}
</style>
<!--<![endif]-->
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
}
}
</style>
<style type="text/css">
</style>
</head>
<body style="background-color:#f9f9f9;">
<div style="background-color:#f9f9f9;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#f9f9f9;background-color:#f9f9f9;Margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#f9f9f9;background-color:#f9f9f9;width:100%;">
<tbody>
<tr>
<td style="border-bottom:#333957 solid 5px;direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#fff;background-color:#fff;Margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#fff;background-color:#fff;width:100%;">
<tbody>
<tr>
<td style="border:#dddddd solid 1px;border-top:0px;direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
style="vertical-align:bottom;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:bottom;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:bottom;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:64px;">
<img height="auto" src="https://i.imgur.com/KO1vcE9.png" style="border:0;display:block;outline:none;text-decoration:none;width:100%;" width="64" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-bottom:40px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:28px;font-weight:bold;line-height:1;text-align:center;color:#555;">
Welcome to {{Product}}
</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:22px;text-align:left;color:#555;">
Hello {{ name }}!<br></br>
Thank you for signing up for {{ product }}. We're really happy to have you! Click the link below to login to your account:
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;padding-top:30px;padding-bottom:50px;word-break:break-word;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#2F67F6" role="presentation" style="border:none;border-radius:3px;color:#ffffff;cursor:auto;padding:15px 25px;" valign="middle">
<p style="background:#2F67F6;color:#ffffff;font-family:'Helvetica Neue',Arial,sans-serif;font-size:15px;font-weight:normal;line-height:120%;Margin:0;text-decoration:none;text-transform:none;">
Login to Your Account
</p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:20px;text-align:left;color:#525252;">
Best regards,<br><br> Csaba Kissi<br>Elerion ltd., CEO and Founder<br>
<a href="https://www.htmlemailtemplates.net" style="color:#2F67F6">htmlemailtemplates.net</a>
</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="Margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
style="vertical-align:bottom;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:bottom;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%">
<tbody>
<tr>
<td style="vertical-align:bottom;padding:0;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:0;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:12px;font-weight:300;line-height:1;text-align:center;color:#575757;">
Some Firm Ltd, 35 Avenue. City 10115, USA
</div>
</td>
</tr>
<tr>
<td align="center" style="font-size:0px;padding:10px;word-break:break-word;">
<div style="font-family:'Helvetica Neue',Arial,sans-serif;font-size:12px;font-weight:300;line-height:1;text-align:center;color:#575757;">
<a href="" style="color:#575757">Unsubscribe</a> from our emails
</div>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View file

@ -1,60 +0,0 @@
{% extends "layouts/auth.twig" %}
{% block title %}Sign Up{% endblock %}
{% block content %}
<div class="page page-center">
<div class="container container-tight py-4">
<div class="text-center mb-4">
<a href="." class="navbar-brand navbar-brand-autodark"><img src="./static/logo-bw.svg" height="36" alt=""></a>
{% include 'partials/flash.twig' %}
</div>
<form class="card card-md" action="{{ route('register') }}" name="register" method="post" autocomplete="off" novalidate>
{{ csrf.field | raw }}
<div class="card-body">
<h2 class="card-title text-center mb-4">Create new account</h2>
<div class="mb-3">
<label class="form-label">User Name</label>
<input type="text" name="username" value="{{ old.username }}" class="form-control{{ errors.name ? ' is-invalid' : '' }}" placeholder="Enter name">
{% if errors.username %}
<small class="form-hint">{{ errors.username | first }}</small>
{% endif %}
</div>
<div class="mb-3">
<label class="form-label">Email address</label>
<input type="email" name="email" value="{{ old.email }}" class="form-control{{ errors.email ? ' is-invalid' : '' }}" placeholder="Enter email">
{% if errors.email %}
<small class="form-hint">{{ errors.email | first }}</small>
{% endif %}
</div>
<div class="mb-3">
<label class="form-label">Password</label>
<div class="input-group input-group-flat">
<input type="password" name="password" class="form-control{{ errors.password ? ' is-invalid' : '' }}" placeholder="Password" autocomplete="off">
<span class="input-group-text">
<a href="#" class="link-secondary" title="Show password" data-bs-toggle="tooltip"><!-- Download SVG icon from http://tabler-icons.io/i/eye -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><circle cx="12" cy="12" r="2" /><path d="M22 12c-2.667 4.667 -6 7 -10 7s-7.333 -2.333 -10 -7c2.667 -4.667 6 -7 10 -7s7.333 2.333 10 7" /></svg>
</a>
</span>
{% if errors.password %}
<small class="form-hint">{{ errors.password | first }}</small>
{% endif %}
</div>
</div>
<div class="mb-3">
<label class="form-check">
<input type="checkbox" value="" id="flexCheckChecked" class="form-check-input"/>
<span class="form-check-label">Agree the <a href="./terms-of-service.html" tabindex="-1">terms and policy</a>.</span>
</label>
</div>
<div class="form-footer">
<button type="submit" class="btn btn-primary w-100">Create new account</button>
</div>
</div>
</form>
<div class="text-center text-muted mt-3">
Already have account? <a href="{{ route('login') }}" tabindex="-1">Sign in</a>
</div>
</div>
</div>
{% endblock %}

View file

@ -24,14 +24,8 @@ use Tqdev\PhpCrudApi\Config\Config;
$app->get('/', HomeController::class .':index')->setName('index'); $app->get('/', HomeController::class .':index')->setName('index');
$app->group('', function ($route) { $app->group('', function ($route) {
$route->get('/register', AuthController::class . ':createRegister')->setName('register');
$route->post('/register', AuthController::class . ':register');
$route->get('/login', AuthController::class . ':createLogin')->setName('login'); $route->get('/login', AuthController::class . ':createLogin')->setName('login');
$route->post('/login', AuthController::class . ':login'); $route->post('/login', AuthController::class . ':login');
$route->get('/verify-email', AuthController::class.':verifyEmail')->setName('verify.email');
$route->get('/verify-email-resend',AuthController::class.':verifyEmailResend')->setName('verify.email.resend');
$route->get('/forgot-password', PasswordController::class . ':createForgotPassword')->setName('forgot.password'); $route->get('/forgot-password', PasswordController::class . ':createForgotPassword')->setName('forgot.password');
$route->post('/forgot-password', PasswordController::class . ':forgotPassword'); $route->post('/forgot-password', PasswordController::class . ':forgotPassword');
$route->get('/reset-password', PasswordController::class.':resetPassword')->setName('reset.password'); $route->get('/reset-password', PasswordController::class.':resetPassword')->setName('reset.password');