Skip to content

Instantly share code, notes, and snippets.

View vaygeth89's full-sized avatar

Abdulmohsen Alkhamees vaygeth89

View GitHub Profile
@vaygeth89
vaygeth89 / renew_access_token.dart
Created October 23, 2021 08:58
Serialized class
//Add this
import 'package:json_annotation/json_annotation.dart';
//Add this
part 'renew_access_token.g.dart';
//Add this
@JsonSerializable()
class RenewAccessToken {
String refreshToken;
RenewAccessToken({
@vaygeth89
vaygeth89 / authentication_data.dart
Created October 23, 2021 08:59
Serialized class
//Add this
import 'package:json_annotation/json_annotation.dart';
//Add this
part 'authentication_data.g.dart';
//Add this
@JsonSerializable()
class AuthenticationData {
final String id;
final String accessToken;
@vaygeth89
vaygeth89 / business_error.dart
Created October 23, 2021 11:38
Serialized model
//Add this
import 'package:json_annotation/json_annotation.dart';
//Add this
part 'business_error.g.dart';
//Add this
@JsonSerializable()
class BusinessError {
final String message;
final int? businessError;
import 'package:tutorial_flutter_minimalist_authentication/models/session/authentication_data.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/account/sign_in.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/account/renew_access_token.dart';
import 'package:tutorial_flutter_minimalist_authentication/repositories/api/account_repository.dart';
class AccountApiRepository implements AccountRepository {
AccountApiRepository();
@override
Future<AuthenticationData> signIn({
//Todo use your own URL/DNS here
//This IP is my local machine service that have my backend code installed
const accountAPIURL_v1 = "http://192.168.68.111:5000/api/v1/account/";
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:tutorial_flutter_minimalist_authentication/constants/constants.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/access_token_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/business_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/refresh_token_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/api/business_error.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/session/authentication_data.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/account/sign_in.dart';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:tutorial_flutter_minimalist_authentication/constants/constants.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/access_token_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/business_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/exceptions/refresh_token_exception.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/api/business_error.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/session/authentication_data.dart';
import 'package:tutorial_flutter_minimalist_authentication/models/account/sign_in.dart';
@override
Future<AuthenticationData> signIn({
required SignIn signIn,
String routePath = "sign-in",
}) async {
try {
var result = await super
._dio
.post(routePath, data: signIn.toJson())
.timeout(super.timeout);
@override
Future<bool> verifyToken(
{required String accessToken, String routePath = "verify-token"}) async {
try {
var result = await super._dio.get(routePath,
queryParameters: {"accessToken": accessToken}).timeout(super.timeout);
if (result.statusCode == 200) {
return true;
}
@override
Future<AuthenticationData> renewAccessToken(
{required RenewAccessToken renewAccessToken,
String routePath = "renew-token"}) async {
try {
var result = await super
._dio
.post(routePath, data: renewAccessToken.toJson())
.timeout(super.timeout);
if (result.statusCode == 200) {