added token revoke to logout
This commit is contained in:
parent
34f9929b16
commit
50d1803a18
@ -93,4 +93,13 @@ class User {
|
|||||||
"refresh_user_data": "false",
|
"refresh_user_data": "false",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Map<String, Object?> logoutBody({
|
||||||
|
required String refreshToken,
|
||||||
|
}) {
|
||||||
|
return {
|
||||||
|
"refresh_token": refreshToken,
|
||||||
|
"client_id": KretaAPI.clientId,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -176,13 +176,16 @@ class _SidebarState extends State<Sidebar> {
|
|||||||
String? userId = user.id;
|
String? userId = user.id;
|
||||||
if (userId == null) return;
|
if (userId == null) return;
|
||||||
|
|
||||||
// Delete User
|
// revoke refresh token
|
||||||
|
await Provider.of<KretaClient>(context, listen: false).logout();
|
||||||
|
|
||||||
|
// delete user from app
|
||||||
user.removeUser(userId);
|
user.removeUser(userId);
|
||||||
await Provider.of<DatabaseProvider>(context, listen: false)
|
await Provider.of<DatabaseProvider>(context, listen: false)
|
||||||
.store
|
.store
|
||||||
.removeUser(userId);
|
.removeUser(userId);
|
||||||
|
|
||||||
// If no other Users left, go back to LoginScreen
|
// if no other users left, go back to login screen
|
||||||
if (user.getUsers().isNotEmpty) {
|
if (user.getUsers().isNotEmpty) {
|
||||||
user.setUser(user.getUsers().first.id);
|
user.setUser(user.getUsers().first.id);
|
||||||
restore().then((_) => user.setUser(user.getUsers().first.id));
|
restore().then((_) => user.setUser(user.getUsers().first.id));
|
||||||
|
@ -3,6 +3,7 @@ import 'package:intl/intl.dart';
|
|||||||
class KretaAPI {
|
class KretaAPI {
|
||||||
// IDP API
|
// IDP API
|
||||||
static const login = BaseKreta.kretaIdp + KretaApiEndpoints.token;
|
static const login = BaseKreta.kretaIdp + KretaApiEndpoints.token;
|
||||||
|
static const logout = BaseKreta.kretaIdp + KretaApiEndpoints.revoke;
|
||||||
static const nonce = BaseKreta.kretaIdp + KretaApiEndpoints.nonce;
|
static const nonce = BaseKreta.kretaIdp + KretaApiEndpoints.nonce;
|
||||||
static const clientId = "kreta-ellenorzo-mobile-android";
|
static const clientId = "kreta-ellenorzo-mobile-android";
|
||||||
|
|
||||||
@ -86,6 +87,7 @@ class BaseKreta {
|
|||||||
|
|
||||||
class KretaApiEndpoints {
|
class KretaApiEndpoints {
|
||||||
static const token = "/connect/token";
|
static const token = "/connect/token";
|
||||||
|
static const revoke = "/connect/revocation";
|
||||||
static const nonce = "/nonce";
|
static const nonce = "/nonce";
|
||||||
static const notes = "/ellenorzo/V3/Sajat/Feljegyzesek";
|
static const notes = "/ellenorzo/V3/Sajat/Feljegyzesek";
|
||||||
static const events = "/ellenorzo/V3/Sajat/FaliujsagElemek";
|
static const events = "/ellenorzo/V3/Sajat/FaliujsagElemek";
|
||||||
|
@ -187,13 +187,15 @@ class KretaClient {
|
|||||||
print("DEBUG: refreshLogin: ${loginUser.id} ${loginUser.name}");
|
print("DEBUG: refreshLogin: ${loginUser.id} ${loginUser.name}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Map? loginRes = await postAPI(KretaAPI.login,
|
Map? loginRes = await postAPI(
|
||||||
|
KretaAPI.login,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: User.loginBody(
|
body: User.loginBody(
|
||||||
username: loginUser.username,
|
username: loginUser.username,
|
||||||
password: loginUser.password,
|
password: loginUser.password,
|
||||||
instituteCode: loginUser.instituteCode,
|
instituteCode: loginUser.instituteCode,
|
||||||
));
|
),
|
||||||
|
);
|
||||||
|
|
||||||
if (loginRes != null) {
|
if (loginRes != null) {
|
||||||
if (loginRes.containsKey("access_token")) {
|
if (loginRes.containsKey("access_token")) {
|
||||||
@ -223,4 +225,22 @@ class KretaClient {
|
|||||||
|
|
||||||
_loginRefreshing = false;
|
_loginRefreshing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> logout() async {
|
||||||
|
User? loginUser = _user.user;
|
||||||
|
if (loginUser == null) return;
|
||||||
|
|
||||||
|
Map<String, String> headers = {
|
||||||
|
"content-type": "application/x-www-form-urlencoded",
|
||||||
|
};
|
||||||
|
|
||||||
|
await postAPI(
|
||||||
|
KretaAPI.logout,
|
||||||
|
headers: headers,
|
||||||
|
body: User.logoutBody(
|
||||||
|
refreshToken: refreshToken!,
|
||||||
|
),
|
||||||
|
json: false,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user