TF-624 Create login-callback.html to redirect url on browser

This commit is contained in:
dab246
2022-06-07 18:03:03 +07:00
committed by Dat H. Pham
parent f00d3c7569
commit fd43a94192
2 changed files with 36 additions and 2 deletions
+5 -2
View File
@@ -1,13 +1,14 @@
import 'package:core/utils/build_utils.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
class OIDCConfiguration with EquatableMixin { class OIDCConfiguration with EquatableMixin {
static const redirectOidc = 'teammail.mobile://oauthredirect'; static const redirectOidcMobile = 'teammail.mobile://oauthredirect';
static const redirectOidcWeb = 'http://localhost:3000/login-callback.html';
static const wellKnownOpenId = '.well-known/openid-configuration'; static const wellKnownOpenId = '.well-known/openid-configuration';
final String authority; final String authority;
final String clientId; final String clientId;
final String redirectUrl = redirectOidc;
final List<String> scopes; final List<String> scopes;
OIDCConfiguration({ OIDCConfiguration({
@@ -24,6 +25,8 @@ class OIDCConfiguration with EquatableMixin {
} }
} }
String get redirectUrl => BuildUtils.isWeb ? redirectOidcWeb : redirectOidcMobile;
String get clientIdHash => clientId.hashCode.toString(); String get clientIdHash => clientId.hashCode.toString();
@override @override
+31
View File
@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<script>
const AUTH_DESTINATION_KEY = "auth_destination_url";
const AUTH_RESPONSE_KEY = "auth_info";
window.onload = function () {
if (window.opener && window.opener !== window) { //Used when working as a popup. Uses post message to respond to the parent window
var parent = window.opener ?? window.parent;
parent.postMessage(location.href, "*");
} else { //Used for redirect loop functionality.
//Get the original page destination
const destination = sessionStorage.getItem(AUTH_DESTINATION_KEY || "/");
sessionStorage.removeItem(AUTH_DESTINATION_KEY);
//Store the current window location that will be used to get the information for authentication
sessionStorage.setItem(AUTH_RESPONSE_KEY, window.location);
//Redirect to where we're going so that we can restore state completely
location.assign(destination);
}
}
</script>
</head>
<body>
</body>
</html>