I'm building an app in flutter (latest build) for students on the university. every student has its own email and password (ex. s2170456@student.utwente.nl), which is integrated in google, so everyone is able to see notifications in Gmail.
This does also mean; if you want to log in with google, your studentEmail is an option to do so. I want to implement a google log-in feature where only student of the university (with their email sXXXXXXX@student.utwente.nl) are able to login.
My question is: is there a way to filter on the google login email? I thought about using normal email login and use RegEx to validate, but this means student should firstly signup. I would like to skip the whole sign-up and let the students use their already owned student email to signin.
it should look something like this (if it is even possible) VV
Widget googleLogin () {
googleLogin button()
if(googlelogin.email == sXXXXXXX@student.utwente.nl)
log user in;
} else {
return error message('invalid email')
}
I want this to be able to only register and login user with student email.
You can use google sign in integration like this.
GoogleSignInAccount _currentUser;
then in init state:-
@override
void initState() {
super.initState();
_googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
setState(() {
_currentUser = account;
print("User Name ${_currentUser.displayName}");
print("User Email ${_currentUser.email}");
});
if (_currentUser != null) {
var socialData = SocialData(
_currentUser.displayName, "", _currentUser.email, LoginType.GOOGLE);
_startHomeScreen(socialData);
} else {
_showError('Error, Please try again later');
}
});
}
on successful login, this will execute:-
_startHomeScreen(SocialData data) {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return Home(socialData: data);
}));
}
Future<void> _handleSignIn() async {
try {
await _googleSignIn.signIn();
} catch (error) {
print(error);
}
}
Call _handleSignIn() on click of google sign in button.