# Frontier
Frontier is a simple strategy-based authentication library for Dart & Flutter. Extremely easy to use and highly customizable to fit your needs. It is designed to be simple and easy to use, yet powerful and flexible.
Serinus Frontier is a plugin that allows you to use the Frontier library in your Serinus application.
## Installation
The installation of the plugin is immediate and can be done using the following command:
```bash
dart pub add serinus_frontier
```
## Usage
To use the plugin, you need to import it in your entrypoint module:
```dart
import 'package:serinus_frontier/serinus_frontier.dart';
class AppModule extends Module {
AppModule() : super(
imports: [
FrontierModule([
MyStrategy(
MyStrategyOptions(),
(options, value, done) => done(value)
)
])
]);
}
```
`MyStrategy` in the example above is a Frontier strategy. You can either use the built-in strategies or create your own. The `MyStrategyOptions` is the options for the strategy. The last parameter is the strategy callback function.
The list of built-in strategies can be found [here](https://frontier.avesbox.com/strategies.html).
### Built-in Metadata
serinus_frontier provides built-in metadata that can be used to protect your routes. The metadata can be used in the `on` method of the controller or overriding the `metadata` getter in the controller.
```dart
import 'package:serinus_frontier/serinus_frontier.dart';
class MyController extends Controller {
MyController({super.path = '/'}) {
on(
Route.get(
'/',
metadata: [
// MyStrategy is the name of the strategy
GuardMeta('MyStrategy')
]
),
(context) => 'Hello World!'
);
}
}
```
## Links