kiss_auth 0.2.0 copy "kiss_auth: ^0.2.0" to clipboard
kiss_auth: ^0.2.0 copied to clipboard

A modular authentication and authorization interface for Dart applications.

kiss_auth #

A modular authentication and authorization library for Dart applications. Kiss Auth follows the "Keep It Simple, Stupid" principle with clear separation of concerns.

πŸ“‹ Table of Contents #

Overview #

Kiss Auth provides three independent modules:

  1. Login (kiss_login) - Credential-based authentication (get tokens)
  2. Authentication (kiss_authentication) - JWT token validation (validate tokens)
  3. Authorization (kiss_authorization) - Role/permission-based access control

Each module can be used independently or combined as needed.

Installation #

Add to your pubspec.yaml:

dependencies:
  kiss_auth: ^0.1.0

Modules #

πŸ” Login Module (kiss_login) #

Get tokens using credentials. Provides interfaces for external authentication providers.

import 'package:kiss_auth/kiss_login.dart';

final provider = SomeExternalLoginProvider(); // Firebase, PocketBase, etc.
final loginService = LoginService(provider);

final result = await loginService.loginWithPassword('user', 'password');
if (result.isSuccess) {
  print('Token: ${result.accessToken}');
}

πŸ” Authentication Module (kiss_authentication) #

Validate JWT tokens and extract identity.

import 'package:kiss_auth/kiss_authentication.dart';

final validator = JwtAuthValidator.hmac('secret-key');
final authData = await validator.validateToken(token);
print('User: ${authData.userId}');

πŸ›‘οΈ Authorization Module (kiss_authorization) #

Role and permission-based access control.

import 'package:kiss_auth/kiss_authorization.dart';

final authzClient = AuthorizationClient(provider);
final canEdit = await authzClient.hasPermission('user123', 'document:edit');

Quick Start #

Option 1: Login Only (Get Tokens) #

import 'package:kiss_auth/kiss_login.dart';

final provider = InMemoryLoginProvider(); // or Firebase, PocketBase, etc.
final loginService = LoginService(provider);

final result = await loginService.loginWithPassword('admin', 'admin123');
if (result.isSuccess) {
  print('Logged in: ${result.user?.userId}');
  print('Token: ${result.accessToken}');
}

Option 2: Authentication Only (Validate Tokens) #

import 'package:kiss_auth/kiss_authentication.dart';

final validator = JwtAuthValidator.hmac('your-secret-key');
final authData = await validator.validateToken(jwtToken);
print('User: ${authData.userId}');
print('Roles: ${authData.jwt.getClaim<List>('roles')}');

Option 3: Authorization Only (Check Permissions) #

import 'package:kiss_auth/kiss_authorization.dart';

final provider = InMemoryAuthorizationProvider();

final canEdit = await provider.hasPermission('user123', 'document:edit');
print('Can edit: $canEdit');

Option 4: Combined Usage #

// 1. Get token (Login Module)
final loginResult = await loginService.loginWithPassword('user', 'pass');
final token = loginResult.accessToken!;

// 2. Validate token (Authentication Module)  
final authData = await validator.validateToken(token);

// 3. Check permissions (Authorization Module)  
final canEdit = await authzProvider.hasPermission(authData.userId, 'edit');

Examples #

Run the examples to see the modules in action:

# Login module example
dart run example/login_example.dart

# Authentication module example  
dart run example/kiss_auth_example.dart

# Authorization module example
dart run example/separate_concerns_example.dart

External Providers #

The login module is designed to work with external authentication providers:

  • kiss_auth_firebase - Firebase Authentication
  • kiss_auth_pocketbase - PocketBase Authentication
  • kiss_auth_auth0 - Auth0 Authentication
  • kiss_auth_supabase - Supabase Authentication

Each provider implements the LoginProvider interface for seamless integration.

Contributing #

Contributions welcome! Please read the contributing guidelines and submit pull requests.

License #

MIT License - see LICENSE file for details.

0
likes
140
points
1.04k
downloads

Publisher

unverified uploader

Weekly Downloads

A modular authentication and authorization interface for Dart applications.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dart_jsonwebtoken, meta, very_good_analysis

More

Packages that depend on kiss_auth