Создание коллекций
This commit is contained in:
16
lib/services/auth/auth_interface.dart
Normal file
16
lib/services/auth/auth_interface.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
///
|
||||
///
|
||||
///
|
||||
abstract interface class AuthInterface {
|
||||
/// Проверка авторизации
|
||||
Future<bool> get isAuth;
|
||||
|
||||
/// Получение токена
|
||||
Future<String?> get token;
|
||||
|
||||
/// Авторизация
|
||||
Future<String?> login(String email);
|
||||
|
||||
/// Отправка кода
|
||||
Future<bool> sendCode(String code, String uid);
|
||||
}
|
||||
72
lib/services/auth/auth_service.dart
Normal file
72
lib/services/auth/auth_service.dart
Normal file
@@ -0,0 +1,72 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:dio_smart_retry/dio_smart_retry.dart';
|
||||
import 'package:injectable/injectable.dart';
|
||||
import 'package:remever/common/resources.dart';
|
||||
import 'package:remever/common/services/api_client.dart';
|
||||
import 'package:remever/common/storage.dart';
|
||||
import 'package:remever/common/typedef.dart';
|
||||
import 'package:remever/services/auth/auth_interface.dart';
|
||||
|
||||
///
|
||||
/// Сервис авторизации
|
||||
///
|
||||
|
||||
@Singleton(as: AuthInterface)
|
||||
final class AuthService implements AuthInterface {
|
||||
@override
|
||||
Future<bool> get isAuth async => await token != null;
|
||||
|
||||
@override
|
||||
Future<String?> get token async {
|
||||
final String? accessToken = await authSecStorage.read(
|
||||
key: StorageKeys.accessToken,
|
||||
);
|
||||
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> login(String email) async {
|
||||
try {
|
||||
final Response<dynamic> result = await apiClient.post(
|
||||
'/auth/email/send',
|
||||
options: Options()..disableRetry = true,
|
||||
data: <String, dynamic>{'email': email.toLowerCase()},
|
||||
);
|
||||
|
||||
final Json response = Json.from(result.data);
|
||||
|
||||
if (response['success'] == false) return null;
|
||||
|
||||
return response['result']['authUid'];
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> sendCode(String code, String uid) async {
|
||||
try {
|
||||
final Response<dynamic> result = await apiClient.post(
|
||||
'/auth/code/login',
|
||||
options: Options()..disableRetry = true,
|
||||
data: <String, dynamic>{'authUid': uid, 'confirmCode': code},
|
||||
);
|
||||
|
||||
final Json response = Json.from(result.data);
|
||||
|
||||
final bool success = response['success'] ?? false;
|
||||
|
||||
if (success) {
|
||||
await authSecStorage.write(
|
||||
key: StorageKeys.accessToken,
|
||||
value: response['result']['token'],
|
||||
);
|
||||
}
|
||||
|
||||
return success;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user