public CosignLoginResultModel Extract(IQueryCollection query) { StringValues states = query["state"]; string state = states.FirstOrDefault(); StringValues redirectUrls = query["redirectUrl"]; string redirectUrl = redirectUrls.FirstOrDefault(); StringValues codes = query[$"cosign-{_cosignClientName}"]; string code = codes.FirstOrDefault(); string token = code.Replace(" ", "+"); return(CosignLoginResultModel.Create(state, redirectUrl, token)); }
public async Task <IActionResult> Login() { CosignLoginResultModel cosignModel = _cosignLoginResultsExtractor.Extract(Request.Query); JObject payload = _tcpBackchannel.Send( cosignModel.Token, _cosignServer.Name, _cosignServer.Port, _cosignClient.Name, _cosignServer.TryCount); LoggedinUserModel loggedinUserModel = _payloadExctractor.Exctract(payload); string cacheKey = await _loggedUsersStorage.SaveLoginAsync(loggedinUserModel); Dictionary <string, string> parameters = new Dictionary <string, string> { { "code", cacheKey }, { "state", cosignModel.State } }; string redirectUrl = QueryHelpers.AddQueryString(cosignModel.RedirectUrl, parameters); return(Redirect(redirectUrl)); }