OAuth and cryto management APIs + Store OAuth codes in lookup stores rather than memory

This commit is contained in:
mdecimus
2024-04-02 17:50:37 +02:00
parent 223bd59bab
commit 93a2f691ea
28 changed files with 723 additions and 1173 deletions

View File

@@ -1 +0,0 @@
<div class="illustration"><i class="icon ion-close-circled"></i></div><p class="auth">@@@</p>

View File

@@ -1 +0,0 @@
</form></div><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js"></script></body></html>

View File

@@ -1 +0,0 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Stalwart Mail Server - Authorization</title><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css"><style>html, body{height: 100%; margin: 0;}.login-clean{background: #f1f7fc; padding: 80px 0; display: flex; flex-flow: column; height: 100%;}.login-clean form{max-width: 320px; width: 90%; margin: 0 auto; background-color: #ffffff; padding: 40px; border-radius: 4px; color: #505e6c; box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);}.login-clean .illustration{text-align: center; padding: 0 0 0px; font-size: 70px; color: rgb(244, 71, 107);}.login-clean form .form-control{background: #f7f9fc; border: none; border-bottom: 1px solid #dfe7f1; border-radius: 0; box-shadow: none; outline: none; color: inherit; text-indent: 8px; height: 42px;}.login-clean form .btn-primary{background: #f4476b; border: none; border-radius: 4px; padding: 11px; box-shadow: none; margin-top: 26px; text-shadow: none; outline: none !important;}.login-clean form .btn-primary:hover, .login-clean form .btn-primary:active{background: #eb3b60;}.login-clean form .btn-primary:active{transform: translateY(1px);}.login-clean form .auth{display: block; text-align: center; font-size: 14px; color: #6f7a85; opacity: 0.9; padding: 0 0 10px; text-decoration: none;}</style></head><body><div class="login-clean"><form method="post" action="@@@"><h2 class="sr-only">Stalwart Mail Server</h2>

View File

@@ -1 +0,0 @@
<div class="form-group"><input class="form-control" type="text" name="email" placeholder="Login"></div><div class="form-group"><input class="form-control" type="password" name="password" placeholder="Password"></div><div class="form-group"><button class="btn btn-primary btn-block" type="submit">Authorize</button></div><a class="auth" style="font-size: 12px;" href="@@@">Cancel</a>

View File

@@ -1 +0,0 @@
<div class="form-group"><input class="form-control" type="text" name="code" value="@@@" placeholder="Enter code"></div>

View File

@@ -1 +0,0 @@
<input type="hidden" name="code" value="@@@">

View File

@@ -1 +0,0 @@
<div class="illustration"><i class="icon ion-locked"></i></div><p class="auth">Authorize client to access your <b>Stalwart Mail Server</b> account</p>

View File

@@ -1 +0,0 @@
<div class="illustration"><i class="icon ion-locked"></i></div><p class="auth">Authorize device to access your <b>Stalwart JMAP</b> account</p>

View File

@@ -1 +0,0 @@
<div class="illustration"><i class="icon ion-close-circled"></i></div><p class="auth">Incorrect username or password, please try again.</p>

View File

@@ -1 +0,0 @@
<div class="illustration"><i class="icon ion-unlocked"></i></div><p class="auth"><b>Authentication successful</b><br />You can now close this window.</p>

View File

@@ -1,125 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Stalwart JMAP - Device Authorization
</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
<style>
html,
body {
height: 100%;
margin: 0;
}
.login-clean {
background: #f1f7fc;
padding: 80px 0;
display: flex;
flex-flow: column;
height: 100%;
}
.login-clean form {
max-width: 320px;
width: 90%;
margin: 0 auto;
background-color: #ffffff;
padding: 40px;
border-radius: 4px;
color: #505e6c;
box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);
}
.login-clean .illustration {
text-align: center;
padding: 0 0 0px;
font-size: 70px;
color: rgb(244, 71, 107);
}
.login-clean form .form-control {
background: #f7f9fc;
border: none;
border-bottom: 1px solid #dfe7f1;
border-radius: 0;
box-shadow: none;
outline: none;
color: inherit;
text-indent: 8px;
height: 42px;
}
.login-clean form .btn-primary {
background: #f4476b;
border: none;
border-radius: 4px;
padding: 11px;
box-shadow: none;
margin-top: 26px;
text-shadow: none;
outline: none !important;
}
.login-clean form .btn-primary:hover,
.login-clean form .btn-primary:active {
background: #eb3b60;
}
.login-clean form .btn-primary:active {
transform: translateY(1px);
}
.login-clean form .auth {
display: block;
text-align: center;
font-size: 14px;
color: #6f7a85;
opacity: 0.9;
padding: 0 0 10px;
text-decoration: none;
}
</style>
</head>
<body>
<div class="login-clean">
<form method="post" action="/auth">
<h2 class="sr-only">Stalwart JMAP</h2>
<div class="illustration"><i class="icon ion-locked"></i></div>
<p class="auth">Authorize device to access your <b>Stalwart JMAP</b> account</p>
<div class="form-group"><input class="form-control" type="code" name="text" value="@@@"
placeholder="Enter code"></div>
<div class="form-group"><input class="form-control" type="email" name="email" placeholder="Login"></div>
<div class="form-group"><input class="form-control" type="password" name="password" placeholder="Password">
</div>
<div class="form-group"><button class="btn btn-primary btn-block" type="submit">Authorize</button>
<a class="auth" style="font-size: 12px;" href="@@@">Deny</a>
</div>
</div>
<!--div class="illustration"><i class="icon ion-close-circled"></i></div>
<p class="auth">Incorrect username or password, please try again.</p>
<div class="form-group"><input class="form-control" type="code" name="text" value="@@@" placeholder="Enter code"></div>
<div class="form-group"><input class="form-control" type="email" name="email" placeholder="Login"></div>
<div class="form-group"><input class="form-control" type="password" name="password" placeholder="Password">
</div>
<div class="form-group"><button class="btn btn-primary btn-block" type="submit">Authorize</button></div-->
<!--div class="illustration"><i class="icon ion-close-circled"></i></div>
<p class="auth">There was a problem processing your request.</p-->
<!--div class="illustration"><i class="icon ion-unlocked"></i></div>
<p class="auth"><b>Authentication successful</b><br />You can now close this window.</p-->
</form>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js"></script>
</body>
</html>