mirror of
https://github.com/HendrikRauh/inventree-app.git
synced 2026-02-04 12:53:18 +00:00
Implement token-based login method and update localization for token prompts
This commit is contained in:
parent
8f18e328e0
commit
2aa745cf69
3 changed files with 188 additions and 69 deletions
55
lib/api.dart
55
lib/api.dart
|
|
@ -2,32 +2,31 @@ import "dart:async";
|
|||
import "dart:convert";
|
||||
import "dart:io";
|
||||
|
||||
import "package:cached_network_image/cached_network_image.dart";
|
||||
import "package:flutter/foundation.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_cache_manager/flutter_cache_manager.dart";
|
||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||
import "package:http/http.dart" as http;
|
||||
import "package:http/io_client.dart";
|
||||
import "package:intl/intl.dart";
|
||||
import "package:inventree/main.dart";
|
||||
import "package:inventree/widget/progress.dart";
|
||||
import "package:one_context/one_context.dart";
|
||||
import "package:open_filex/open_filex.dart";
|
||||
import "package:cached_network_image/cached_network_image.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||
import "package:flutter_cache_manager/flutter_cache_manager.dart";
|
||||
import "package:path_provider/path_provider.dart";
|
||||
|
||||
import "package:inventree/api_form.dart";
|
||||
import "package:inventree/app_colors.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
import "package:inventree/l10.dart";
|
||||
import "package:inventree/helpers.dart";
|
||||
import "package:inventree/inventree/model.dart";
|
||||
import "package:inventree/inventree/notification.dart";
|
||||
import "package:inventree/inventree/status_codes.dart";
|
||||
import "package:inventree/inventree/sentry.dart";
|
||||
import "package:inventree/inventree/status_codes.dart";
|
||||
import "package:inventree/l10.dart";
|
||||
import "package:inventree/main.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
import "package:inventree/user_profile.dart";
|
||||
import "package:inventree/widget/dialogs.dart";
|
||||
import "package:inventree/widget/progress.dart";
|
||||
import "package:inventree/widget/snacks.dart";
|
||||
import "package:one_context/one_context.dart";
|
||||
import "package:open_filex/open_filex.dart";
|
||||
import "package:path_provider/path_provider.dart";
|
||||
|
||||
/*
|
||||
* Class representing an API response from the server
|
||||
|
|
@ -163,6 +162,7 @@ class InvenTreeFileService extends FileService {
|
|||
*
|
||||
* InvenTree implements token-based authentication, which is
|
||||
* initialised using a username:password combination.
|
||||
* Alternatively, an existing token provided by the user can be used for authentication.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
@ -540,6 +540,35 @@ class InvenTreeAPI {
|
|||
}
|
||||
}
|
||||
|
||||
Future<APIResponse> checkToken(UserProfile userProfile, String token) async {
|
||||
debug("Checking token @ ${_URL_ME}");
|
||||
|
||||
userProfile.token = token;
|
||||
profile = userProfile;
|
||||
|
||||
await UserProfileDBManager().updateProfile(userProfile);
|
||||
|
||||
final response = await get(_URL_ME);
|
||||
|
||||
if (!response.successful()) {
|
||||
switch (response.statusCode) {
|
||||
case 401:
|
||||
case 403:
|
||||
showServerError(
|
||||
apiUrl,
|
||||
L10().serverAuthenticationError,
|
||||
L10().invalidToken,
|
||||
);
|
||||
default:
|
||||
showStatusCodeError(apiUrl, response.statusCode);
|
||||
}
|
||||
|
||||
debug("Request failed: STATUS ${response.statusCode}");
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fetch a token from the server,
|
||||
* with a temporary authentication header
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue