frontier 1.0.0 copy "frontier: ^1.0.0" to clipboard
frontier: ^1.0.0 copied to clipboard

Create your own authentication and authorization strategies for your web application.

example/lib/example.dart

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');
      }
    });
  });
}
1
likes
160
points
33
downloads

Publisher

verified publisherserinus.app

Weekly Downloads

Create your own authentication and authorization strategies for your web application.

Repository (GitHub)

Topics

#authentication #authorization #backend #web #http

Documentation

API reference

License

MIT (license)

Dependencies

frontier_strategy

More

Packages that depend on frontier