frontier 1.0.0
frontier: ^1.0.0 copied to clipboard
Create your own authentication and authorization strategies for your web application.
import 'dart:io';
import 'package:frontier/frontier.dart';
final class HeaderOptions extends StrategyOptions {
final String key;
final String value;
HeaderOptions({required this.key, required this.value});
}
class HeaderStrategy extends Strategy<HeaderOptions> {
HeaderStrategy(super.options, super.callback);
@override
String get name => 'Header';
@override
Future<void> authenticate(StrategyRequest request) async {
callback.call(options, request.headers[options.key] == options.value, done);
}
}
void main() {
final frontier = Frontier();
frontier.use(HeaderStrategy(HeaderOptions(key: 'auth', value: 'admin'),
(options, result, done) async {
done(result);
}));
final server = HttpServer.bind(InternetAddress.loopbackIPv4, 8080);
server.then((server) {
server.listen((HttpRequest request) async {
final headers = <String, String>{};
request.headers.forEach((key, values) {
headers[key] = values.join(',');
});
final result = await frontier.authenticate(
'Header',
StrategyRequest(headers: headers),
);
if (result) {
request.response.write('Authenticated');
} else {
request.response.statusCode = HttpStatus.unauthorized;
request.response.write('Not Authenticated');
}
});
});
}