mirror of
https://github.com/hanskokx/arcane_framework.git
synced 2026-05-14 02:19:08 +02:00
v1.1.7
- Fixed an issue with the `ArcaneAuthenticationService` where an exception would be thrown when attempting to access an authentication token while no `ArcaneAuthInterface` was registered. Signed-off-by: Hans Kokx <hans.kokx@hackberry.se>
This commit is contained in:
+38
-17
@@ -1,6 +1,13 @@
|
|||||||
|
## 1.1.7
|
||||||
|
|
||||||
|
- Fixed an issue with the `ArcaneAuthenticationService` where an exception would
|
||||||
|
be thrown when attempting to access an authentication token while no
|
||||||
|
`ArcaneAuthInterface` was registered.
|
||||||
|
|
||||||
## 1.1.6
|
## 1.1.6
|
||||||
|
|
||||||
- Updated logging feature to indicate the feature which was enabled or disabled within the log message, instead of only in the metadata
|
- Updated logging feature to indicate the feature which was enabled or disabled
|
||||||
|
within the log message, instead of only in the metadata.
|
||||||
|
|
||||||
## 1.1.5
|
## 1.1.5
|
||||||
|
|
||||||
@@ -12,15 +19,18 @@
|
|||||||
|
|
||||||
## 1.1.3
|
## 1.1.3
|
||||||
|
|
||||||
- Arcane Auth no longer throws exceptions when log out fails, instead returning a `Result<void, String>`. This behavior matches the login method.
|
- Arcane Auth no longer throws exceptions when log out fails, instead returning
|
||||||
|
a `Result<void, String>`. This behavior matches the login method.
|
||||||
|
|
||||||
## 1.1.2
|
## 1.1.2
|
||||||
|
|
||||||
- Removed Flutter exception handling from `ArcaneLoggingService`, as this functionality should be defined by a users' interface.
|
- Removed Flutter exception handling from `ArcaneLoggingService`, as this
|
||||||
|
functionality should be defined by a users' interface.
|
||||||
|
|
||||||
### Migration
|
### Migration
|
||||||
|
|
||||||
Add the following to your `ArcaneLoggingInterface`'s `init` method to replicate the previous behavior:
|
Add the following to your `ArcaneLoggingInterface`'s `init` method to replicate
|
||||||
|
the previous behavior:
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
// Handles unhandled Flutter errors by logging them.
|
// Handles unhandled Flutter errors by logging them.
|
||||||
@@ -54,9 +64,10 @@ PlatformDispatcher.instance.onError = (error, stack) {
|
|||||||
|
|
||||||
## 1.1.1
|
## 1.1.1
|
||||||
|
|
||||||
- [BREAKING] Updated ArcaneAuthInterface to make the `resendVerificationCode`, `confirmSignup`, and `resetPassword` methods more versatile
|
- [BREAKING] Updated ArcaneAuthInterface to make the `resendVerificationCode`,
|
||||||
|
`confirmSignup`, and `resetPassword` methods more versatile
|
||||||
|
|
||||||
### Migration
|
Migration:
|
||||||
|
|
||||||
| Class | Migration path |
|
| Class | Migration path |
|
||||||
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
@@ -66,9 +77,10 @@ PlatformDispatcher.instance.onError = (error, stack) {
|
|||||||
|
|
||||||
## 1.1.0
|
## 1.1.0
|
||||||
|
|
||||||
- [BREAKING] Updated the authentication service and interface to be more versatile
|
- [BREAKING] Updated the authentication service and interface to be more
|
||||||
|
versatile
|
||||||
|
|
||||||
### Migration
|
Migration:
|
||||||
|
|
||||||
| Class | Migration path |
|
| Class | Migration path |
|
||||||
| ------------------- | -------------------------------------------------------------------------------------- |
|
| ------------------- | -------------------------------------------------------------------------------------- |
|
||||||
@@ -85,7 +97,8 @@ PlatformDispatcher.instance.onError = (error, stack) {
|
|||||||
|
|
||||||
## 1.0.6+1
|
## 1.0.6+1
|
||||||
|
|
||||||
- Migrated linting rules to new [arcane_analysis](https://pub.dev/packages/arcane_analysis) package.
|
- Migrated linting rules to new
|
||||||
|
[arcane_analysis](https://pub.dev/packages/arcane_analysis) package.
|
||||||
|
|
||||||
## 1.0.6
|
## 1.0.6
|
||||||
|
|
||||||
@@ -97,18 +110,22 @@ PlatformDispatcher.instance.onError = (error, stack) {
|
|||||||
|
|
||||||
## 1.0.5+1
|
## 1.0.5+1
|
||||||
|
|
||||||
- Marked the `loginWithEmailAndPassword` method in ArcaneAuthenticationService as deprecated and updated example project
|
- Marked the `loginWithEmailAndPassword` method in `ArcaneAuthenticationService`
|
||||||
|
as deprecated and updated example project
|
||||||
|
|
||||||
## 1.0.5
|
## 1.0.5
|
||||||
|
|
||||||
- Added the ability to use a generic type for the login method in ArcaneAuthenticationService
|
- Added the ability to use a generic type for the login method in
|
||||||
- Added the ability to reset the ArcaneAuthenticationService, which will unregister the current interface and clear the authentication state
|
ArcaneAuthenticationService
|
||||||
|
- Added the ability to reset the ArcaneAuthenticationService, which will
|
||||||
|
unregister the current interface and clear the authentication state
|
||||||
- Removed unused testing tooling (e.g., `@visibleForTesting`) from the codebase
|
- Removed unused testing tooling (e.g., `@visibleForTesting`) from the codebase
|
||||||
- Migration guide: Remove usages of `setMocked` in your tests
|
- Migration guide: Remove usages of `setMocked` in your tests
|
||||||
|
|
||||||
## 1.0.4
|
## 1.0.4
|
||||||
|
|
||||||
- Resolved an issue with authentication using the ArcaneAuthenticationService when logging in with an email and password
|
- Resolved an issue with authentication using the ArcaneAuthenticationService
|
||||||
|
when logging in with an email and password
|
||||||
|
|
||||||
## 1.0.3+1
|
## 1.0.3+1
|
||||||
|
|
||||||
@@ -116,11 +133,15 @@ PlatformDispatcher.instance.onError = (error, stack) {
|
|||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
- Added the ability to switch back to the normal environment from the debug environment in ArcaneEnvironment
|
- Added the ability to switch back to the normal environment from the debug
|
||||||
- (breaking) Made the optional `onLoggedOut` callback a Future instead of a void function in ArcaneAuthenticationService
|
environment in ArcaneEnvironment
|
||||||
- Added additional error handling to the login method in ArcaneAuthenticationService
|
- (breaking) Made the optional `onLoggedOut` callback a Future instead of a void
|
||||||
|
function in ArcaneAuthenticationService
|
||||||
|
- Added additional error handling to the login method in
|
||||||
|
ArcaneAuthenticationService
|
||||||
- Added support for following the system's theme in ArcaneTheme
|
- Added support for following the system's theme in ArcaneTheme
|
||||||
- Removed the BuildContext parameter from the `switchTheme` method in ArcaneTheme
|
- Removed the BuildContext parameter from the `switchTheme` method in
|
||||||
|
ArcaneTheme
|
||||||
|
|
||||||
## 1.0.2
|
## 1.0.2
|
||||||
|
|
||||||
|
|||||||
@@ -35,13 +35,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
|
|
||||||
/// Provides direct access to the registered `ArcaneAuthInterface`, if one has
|
/// Provides direct access to the registered `ArcaneAuthInterface`, if one has
|
||||||
/// been registered.
|
/// been registered.
|
||||||
ArcaneAuthInterface get authInterface {
|
ArcaneAuthInterface? get authInterface => _authInterface;
|
||||||
assert(
|
|
||||||
_authInterface != null,
|
|
||||||
"No ArcaneAuthInterface has been registered",
|
|
||||||
);
|
|
||||||
return _authInterface!;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A shortcut to `status != AuthenticationStatus.unauthenticated`.
|
/// A shortcut to `status != AuthenticationStatus.unauthenticated`.
|
||||||
bool get isAuthenticated => status != AuthenticationStatus.unauthenticated;
|
bool get isAuthenticated => status != AuthenticationStatus.unauthenticated;
|
||||||
@@ -53,12 +47,12 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
/// provides one. This token is often used in the headers of HTTP requests
|
/// provides one. This token is often used in the headers of HTTP requests
|
||||||
/// to the backend API.
|
/// to the backend API.
|
||||||
Future<String?> get accessToken =>
|
Future<String?> get accessToken =>
|
||||||
authInterface.accessToken ?? Future.value("");
|
authInterface?.accessToken ?? Future.value("");
|
||||||
|
|
||||||
/// Returns a JWT refresh token if the registered `ArcaneAuthInterface`
|
/// Returns a JWT refresh token if the registered `ArcaneAuthInterface`
|
||||||
/// provides one.
|
/// provides one.
|
||||||
Future<String?> get refreshToken =>
|
Future<String?> get refreshToken =>
|
||||||
authInterface.refreshToken ?? Future.value("");
|
authInterface?.refreshToken ?? Future.value("");
|
||||||
|
|
||||||
/// Removes any registered `ArcaneAuthInterface` and resets all values to
|
/// Removes any registered `ArcaneAuthInterface` and resets all values to
|
||||||
/// default.
|
/// default.
|
||||||
@@ -158,14 +152,13 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
Future<Result<void, String>> logOut({
|
Future<Result<void, String>> logOut({
|
||||||
Future<void> Function()? onLoggedOut,
|
Future<void> Function()? onLoggedOut,
|
||||||
}) async {
|
}) async {
|
||||||
|
if (_authInterface == null) {
|
||||||
|
return Result.error("No ArcaneAuthInterface has been registered");
|
||||||
|
}
|
||||||
|
|
||||||
if (!isAuthenticated) Result.error("User is not authenticated.");
|
if (!isAuthenticated) Result.error("User is not authenticated.");
|
||||||
|
|
||||||
assert(
|
final Result<void, String> loggedOut = await authInterface!.logout();
|
||||||
_authInterface != null,
|
|
||||||
"No ArcaneAuthInterface has been registered",
|
|
||||||
);
|
|
||||||
|
|
||||||
final Result<void, String> loggedOut = await authInterface.logout();
|
|
||||||
|
|
||||||
if (loggedOut.isSuccess) {
|
if (loggedOut.isSuccess) {
|
||||||
setUnauthenticated();
|
setUnauthenticated();
|
||||||
@@ -184,7 +177,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
return Result.error("No ArcaneAuthInterface has been registered");
|
return Result.error("No ArcaneAuthInterface has been registered");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Result<void, String> result = await authInterface.login(
|
final Result<void, String> result = await authInterface!.login(
|
||||||
input: input,
|
input: input,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -206,7 +199,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
return Result.error("No ArcaneAuthInterface has been registered");
|
return Result.error("No ArcaneAuthInterface has been registered");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Result<SignUpStep, String>? result = await authInterface.register(
|
final Result<SignUpStep, String>? result = await authInterface!.register(
|
||||||
input: input,
|
input: input,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -229,7 +222,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
return Result.error("No ArcaneAuthInterface has been registered");
|
return Result.error("No ArcaneAuthInterface has been registered");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Result<bool, String>? result = await authInterface.confirmSignup(
|
final Result<bool, String>? result = await authInterface!.confirmSignup(
|
||||||
username: email,
|
username: email,
|
||||||
confirmationCode: confirmationCode,
|
confirmationCode: confirmationCode,
|
||||||
);
|
);
|
||||||
@@ -251,7 +244,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Future<Result<String, String>>? result =
|
final Future<Result<String, String>>? result =
|
||||||
authInterface.resendVerificationCode(input: email);
|
authInterface!.resendVerificationCode(input: email);
|
||||||
|
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
return Result.error(
|
return Result.error(
|
||||||
@@ -277,7 +270,7 @@ class ArcaneAuthenticationService extends ArcaneService {
|
|||||||
return Result.error("No ArcaneAuthInterface has been registered");
|
return Result.error("No ArcaneAuthInterface has been registered");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Result<bool, String>? result = await authInterface.resetPassword(
|
final Result<bool, String>? result = await authInterface!.resetPassword(
|
||||||
email: email,
|
email: email,
|
||||||
newPassword: newPassword,
|
newPassword: newPassword,
|
||||||
code: confirmationCode,
|
code: confirmationCode,
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
name: arcane_framework
|
name: arcane_framework
|
||||||
description: "Agnostic Reusable Component Architecture for New Ecosystems: a modern framework for bootstrapping new applications"
|
description: "Agnostic Reusable Component Architecture for New Ecosystems: a modern framework for bootstrapping new applications"
|
||||||
version: 1.1.6
|
version: 1.1.7
|
||||||
repository: https://github.com/hanskokx/arcane_framework
|
repository: https://github.com/hanskokx/arcane_framework
|
||||||
issue_tracker: https://github.com/hanskokx/arcane_framework/issues
|
issue_tracker: https://github.com/hanskokx/arcane_framework/issues
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user