feat: new auth mechnasimn via http post (#99)

* Added HTTP Authentication

* Fixed sample config

* Added filter by status code
This commit is contained in:
Akif Rabbani 2021-01-24 05:30:35 +08:00 committed by GitHub
parent 1778948ee2
commit 279541a669
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 0 deletions

View File

@ -67,4 +67,11 @@ module.exports = {
validHosts: ['gmail.com']
}
*/
/** HTTP AUTH
authentication: 'HTTPAuth',
authenticationOptions: {
url: 'https://my-website.com/api/backend-login'
}
*/
};

View File

@ -31,6 +31,7 @@
"main": "dist/app.js",
"dependencies": {
"@hokify/node-ts-cache": "^5.4.1",
"axios": "^0.21.1",
"debug": "^4.3.1",
"imap-simple": "^5.0.0",
"ldapauth-fork": "^5.0.1",

45
src/auth/HTTPAuth.ts Normal file
View File

@ -0,0 +1,45 @@
import axios from 'axios';
import { IAuthentication } from '../types/Authentication';
interface IHTTPAuthOptions {
url: string;
}
export class HTTPAuth implements IAuthentication {
private url: string;
constructor(config: IHTTPAuthOptions) {
this.url = config.url;
}
async authenticate(username: string, password: string) {
let success = false;
try {
await axios
.post(
this.url,
{
username,
password,
},
{
validateStatus(status) {
return status >= 200 && status < 500;
},
}
)
.then((res) => {
console.log(`Code: ${res.status}`);
if (res.status === 200) {
success = true;
console.log('Return code 200, HTTP authentication successful');
} else {
console.log('HTTP authentication failed');
}
});
} catch (err) {
console.error('HTTP response error');
}
return success;
}
}