login method
Future<void>
login(
[ - AuthClientLoginOptions? options
])
inherited
Implementation
Future<void> login([AuthClientLoginOptions? options]) async {
key ??= Ed25519KeyIdentity.generate(null);
// Create the URL of the IDP. (e.g. https://XXXX/#authorize)
var payload = _createAuthPayload(options);
var result = await authFunction(payload);
var parsedResult = Uri.parse(result);
if ((parsedResult.queryParameters["success"] is String &&
parsedResult.queryParameters["success"] == "false") ||
parsedResult.queryParameters["success"] == null) {
if (parsedResult.queryParameters["json"] == null) {
var data = parsedResult.queryParameters["data"];
var decoded = cborDecode<Map>((data as String).toU8a());
handleFailure(jsonEncode(decoded), options?.onError);
} else {
handleFailure(
jsonEncode(parsedResult.queryParameters["json"]), options?.onError);
}
} else if (parsedResult.queryParameters["json"] == null) {
var data = parsedResult.queryParameters["data"];
var decoded = cborDecode<Map>((data as String).toU8a());
var message = Map<String, dynamic>.from(decoded);
var delegations = message["delegations"] as List;
var delegationList = delegations.map((e) {
return DelegationWithSignature()
..delegation = Delegation.fromMap(e["delegation"])
..signature = Uint8List.fromList(e["signature"]);
}).toList();
var userPublicKey = Uint8List.fromList(message["userPublicKey"]);
var response = AuthResponseSuccess()
..delegations = delegationList
..userPublicKey = userPublicKey;
handleSuccess(response, options?.onSuccess);
} else {
var data = parsedResult.queryParameters["json"];
var message = Map<String, dynamic>.from(jsonDecode(data as String));
var delegationChain = DelegationChain.fromJSON(message);
chain = delegationChain;
identity = DelegationIdentity.fromDelegation(key!, chain!);
options?.onSuccess?.call();
}
}