Commit 1e317d45 authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: invalid username or password handle on login form

parent e05a1210
......@@ -49,6 +49,10 @@ class AuthProvider with ChangeNotifier {
loanBookSuccess = value;
}
void setInvalidUsernameOrPassword(bool value) {
invalidUsernameOrPassword = value;
}
Future<void> signIn(
BuildContext context, String username, String password) async {
try {
......@@ -65,16 +69,14 @@ class AuthProvider with ChangeNotifier {
await storeAccessToken(token);
isAuthenticated = true;
invalidUsernameOrPassword = false;
setInvalidUsernameOrPassword(false);
debugPrint("Login successful $token");
} else if (response.statusCode == 401) {
invalidUsernameOrPassword = true;
} else if (response.statusCode == 400) {
setInvalidUsernameOrPassword(true);
debugPrint("Login failed: ${response.statusCode} ${response.body}");
} else {
final code = response.statusCode;
debugPrint("Login failed $code");
debugPrint("Login failed: ${response.statusCode} ${response.body}");
}
setLoading(false);
......
......@@ -39,7 +39,8 @@ class _LoginForm extends State<LoginForm> {
const String formText = "Log In to continue";
return Consumer<AuthProvider>(builder: (context, authProvider, child) {
final isInvalid = authProvider.invalidUsernameOrPassword;
final isInvalidUsernameOrPassword =
authProvider.invalidUsernameOrPassword;
return Column(
children: [
......@@ -106,28 +107,21 @@ class _LoginForm extends State<LoginForm> {
},
keyboardType: TextInputType.visiblePassword,
),
Visibility(
visible: isInvalid,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Theme.of(context).highlightColor,
),
margin: const EdgeInsets.symmetric(vertical: 20.0),
padding: const EdgeInsets.symmetric(
horizontal: 10.0, vertical: 8.0),
child: const Text("Invalid username or password"),
Padding(
padding: const EdgeInsets.symmetric(vertical: 20.0),
child: Text(
isInvalidUsernameOrPassword
? "Invalid username or password"
: "",
style: const TextStyle(color: Colors.red),
),
),
const SizedBox(
height: 20.0,
),
Column(
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
onPressed: () {
onPressed: () async {
if (_formKey.currentState!.validate()) {}
authProvider.signIn(
context,
......
......@@ -24,7 +24,7 @@ class _SearchForm extends State<SearchForm> {
width: queryData.size.width * 0.8,
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: SearchBar(
hintText: "Enter keywords...",
hintText: "Enter book title...",
elevation: WidgetStateProperty.all(0),
onChanged: (value) {
if (value.length >= 3) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment