user_authenticator.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'package:dio/dio.dart';
  2. import 'package:logging/logging.dart';
  3. import 'package:photos/core/configuration.dart';
  4. import 'package:photos/core/event_bus.dart';
  5. import 'package:photos/events/user_authenticated_event.dart';
  6. class UserAuthenticator {
  7. final _dio = Dio();
  8. final _logger = Logger("UserAuthenticator");
  9. UserAuthenticator._privateConstructor();
  10. static final UserAuthenticator instance =
  11. UserAuthenticator._privateConstructor();
  12. Future<bool> login(String username, String password) {
  13. return _dio.post(
  14. Configuration.instance.getHttpEndpoint() + "/users/authenticate",
  15. data: {
  16. "username": username,
  17. "password": password,
  18. }).then((response) {
  19. if (response.statusCode == 200 && response.data != null) {
  20. _saveConfiguration(username, password, response);
  21. Bus.instance.fire(UserAuthenticatedEvent());
  22. return true;
  23. } else {
  24. return false;
  25. }
  26. }).catchError((e) {
  27. _logger.severe(e.toString());
  28. return false;
  29. });
  30. }
  31. Future<bool> create(String username, String password) {
  32. return _dio
  33. .post(Configuration.instance.getHttpEndpoint() + "/users", data: {
  34. "username": username,
  35. "password": password,
  36. }).then((response) {
  37. if (response.statusCode == 200 && response.data != null) {
  38. _saveConfiguration(username, password, response);
  39. Bus.instance.fire(UserAuthenticatedEvent());
  40. return true;
  41. } else {
  42. if (response.data != null && response.data["message"] != null) {
  43. throw Exception(response.data["message"]);
  44. } else {
  45. throw Exception("Something went wrong");
  46. }
  47. }
  48. }).catchError((e) {
  49. _logger.severe(e.toString());
  50. throw e;
  51. });
  52. }
  53. void _saveConfiguration(String username, String password, Response response) {
  54. Configuration.instance.setUsername(username);
  55. Configuration.instance.setPassword(password);
  56. Configuration.instance.setUserID(response.data["id"]);
  57. Configuration.instance.setToken(response.data["token"]);
  58. }
  59. }