kimko_auth 1.0.6
kimko_auth: ^1.0.6 copied to clipboard
Authentication for HNG game Apps
kimko_auth #
Overview #
The Kimiko Auth Library for Flutter provides a robust solution for managing user authentication in your Flutter applications. It supports various operations like login, signup, logout, getting user details, updating profile details, updating profile images, and deactivating accounts.
Table of Contents
- Installation
- Usage
- Public Methods
- Example Code
- Unique App IDs
Installation #
To use the Auth Library in your Flutter project, add it to your pubspec.yaml file:
yaml
dependencies:
kimko_auth: ^1.0.4
Run
dart flutter pub get
To install the new dependency.
Usage #
After adding the Auth Library to your project, you can start using it by importing the package and initializing the KimkoAuth. Initialize the Library
import 'package:flutter/material.dart';
import 'package:kimko_auth/kimko_auth.dart';
KimkoAuth kimkoAuth = KimkoAuth();
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await KimkoAuth.initialize(teamId: 'angrybird-kimiko-f06');
runApp(const MyApp());
}
Kimiko response #
class KimikoResponse {
final dynamic data;
final String? error;
final int? statusCode;
KimikoResponse( {this.data, this.error, this.statusCode});
bool get isSuccess => error == null;
}
dart
class KimikoException implements Exception {
final String? error;
KimikoException({this.error});
}
Sign UP functionality #
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
TextEditingController emailController = TextEditingController();
TextEditingController passwordController = TextEditingController();
TextEditingController fNameController = TextEditingController();
TextEditingController lNameController = TextEditingController();
TextEditingController userNameController = TextEditingController();
Future<void> signUp() async {
try {
var res = await kimkoAuth.signup(
username: userNameController.text.trim(),
email: emailController.text.trim(),
password: passwordController.text.trim(),
firstName: fNameController.text.trim(),
lastName: lNameController.text.trim());
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (_) => const LoginScreen()));
} on KimikoException catch (e) {
print('Kimiko ${e.error}');
} catch (e) {
print("Another error $e");
}
}
Sign in functionality #
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
TextEditingController emailController = TextEditingController();
TextEditingController passwordController = TextEditingController();
Future<void> signIn(BuildContext context) async {
try {
var res = await kimkoAuth.signIn(
email: emailController.text.trim(),
password: passwordController.text.trim());
} on KimikoException catch (e) {
print('Kimiko ${e.error}');
} catch (e) {
print("Another error $e");
}
}
Get User #
Get user details from api
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
Future<void> getUser() async {
try {
var res = await kimkoAuth.getUser();
print(res.data);
if (res.data != null) {
setState(() {
user.value = res.data['data'];
});
Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => const ProfileScreen()));
}
} on KimikoException catch (e) {
debugPrint('Kimiko ${e.error}');
errorSnack(e.error.toString(), context: context);
} catch (e) {
debugPrint("Another error $e");
errorSnack(e.toString(), context: context);
}
}
Get Logged in User #
Logs in a user with the provided email and password.
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
var res = await kimkoAuth.getLoggedInUser();
print(res.data);
Update user #
This updates the user's details. You can update
- firstName
- lastName
- avatarUrl
- username
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
Future<void> updateUser() async {
try {
var res = await kimkoAuth.updateUser(
firstName: fNameController.text.trim(),
lastName: lNameController.text.trim(),
avatarUrl: newImageURL,
);
print(res.data);
} on KimikoException catch (e) {
debugPrint('Kimiko ${e.error}');
errorSnack(e.error.toString(), context: context);
} catch (e) {
debugPrint("Another error $e");
errorSnack(e.toString(), context: context);
}
}
Public Methods #
signup(username: username, email: email, password: password, firstName: firstName, lastName: lastName,) #
Creates a user on the platform
Parameters: #
- email: The user's email address.
- password: The user's password.
- username: The user's username.
- firstname: The user's first name.
- lastName: The user's last name.
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
signup()async {
var res = await kimkoAuth.signup(
username: userNameController.text.trim(),
email: emailController.text.trim(),
password: passwordController.text.trim(),
firstName: fNameController.text.trim(),
lastName: lNameController.text.trim()
);
print(response);
}
Log out #
This deletes all the user data and ends session
Returns: #
Future<KimikoResponse>
containing the user response
Example: #
var res = await kimkoAuth.logOut();
Team IDs #
Team Names and their IDs
Team Kimiko (Flutter Team F) - angrybird-flutter-f01
Flutter Team A - angrybird-kimiko-f06
Team Starlight - heritagequest-starlight-f02
Team Anchor - hockeygame-anchor-f03
Team: Team Kimiko (Telex) #
- @krysnkem (GitHub: krysnkem | Slack: @Christian Onyisi)
- @andymaking (GitHub: andymaking | Slack: @the_andima)
- @adebola-duf (GitHub: adebola-duf | Slack: @bolexyro)
- @ManifestJosh (GitHub: ManifestJosh | Slack: @Manifest)
Feel free to reach out to the team for any questions.