aboutsummaryrefslogtreecommitdiff
path: root/lib/models/login.dart
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2023-09-11 01:00:14 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2023-09-11 01:00:14 +0530
commit7651d5200767a339089dd4021bf77a86b6adcf80 (patch)
tree3fef13a7f0140b22716bfbc9a7c6e842782b853c /lib/models/login.dart
first commitv0.0.1
Diffstat (limited to 'lib/models/login.dart')
-rw-r--r--lib/models/login.dart66
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/models/login.dart b/lib/models/login.dart
new file mode 100644
index 0000000..6412921
--- /dev/null
+++ b/lib/models/login.dart
@@ -0,0 +1,66 @@
+import "package:http/http.dart" as http;
+import "dart:convert";
+
+import "package:openbills/models/user.dart";
+
+enum LoginMethod { email, username }
+
+extension LoginMethodString on LoginMethod {
+ String get value {
+ switch(this) {
+ case LoginMethod.username:
+ return "username";
+ case LoginMethod.email:
+ return "email";
+ }
+ }
+}
+
+class LoginRes {
+ final User user;
+ final String authToken;
+ final String refreshToken;
+
+ LoginRes({
+ required this.user,
+ required this.authToken,
+ required this.refreshToken,
+ });
+
+ factory LoginRes.fromJson(Map<String, dynamic> json) {
+ return LoginRes(
+ user: User.fromJson(json["data"]),
+ authToken: json["auth_token"],
+ refreshToken: json["refresh_token"],
+ );
+ }
+}
+
+Future<LoginRes> userSignIn(String accountName, method, password) async {
+ final res = await http.post(
+ Uri.parse("https://openbills.vidhukant.com/api/auth/signin"),
+ headers: <String, String> {
+ "Content-Type": "application/json; charset=UTF-8",
+ },
+ body: jsonEncode(<String, String> {
+ "AccountName": accountName,
+ "Method": method,
+ "Password": password,
+ })
+ );
+
+ final json = jsonDecode(res.body);
+
+ if (res.statusCode != 200) {
+ switch(res.statusCode) {
+ case 404:
+ throw "This user does not exist";
+ case 500:
+ throw "Internal Server Error";
+ default:
+ throw json["error"];
+ }
+ }
+
+ return LoginRes.fromJson(json);
+}