public static async Task <IHttpResponse> PostAsync( [Property(Name = id_token)] string idToken, [Property(Name = state)] IRef <Authorization> authorization, IAzureApplication application, IProvideUrl urlHelper, IHttpRequest request, IInvokeApplication endpoints, RedirectResponse onRedirectResponse, ServiceUnavailableResponse onNoServiceResponse, BadRequestResponse onBadCredentials, GeneralConflictResponse onFailure) { var parameters = new Dictionary <string, string> { { id_token, idToken }, { state, authorization.id.ToString("N") }, }; var method = EastFive.Azure.Auth.Method.ByMethodName( AzureADB2CProvider.IntegrationName, application); return(await EastFive.Azure.Auth.Redirection.ProcessRequestAsync(method, parameters, application, request, endpoints, urlHelper, (redirect, accountIdMaybe) => onRedirectResponse(redirect), (why) => onBadCredentials().AddReason($"Bad credentials:{why}"), (why) => onNoServiceResponse().AddReason(why), (why) => onFailure(why))); }
public async static Task <HttpResponseMessage> QueryByActorId( [QueryParameter(Name = ActorPropertyName)] Guid actorId, Context context, AzureApplication application, EastFive.Api.SessionToken security, UrlHelper urlHelper, ContentResponse onFound, MultipartResponseAsync onFounds, ReferencedDocumentNotFoundResponse onNotFound, UnauthorizedResponse onUnauthorized, ServiceUnavailableResponse onServiceUnavailable) { return(await await context.PasswordCredentials.GetPasswordCredentialByActorAsync( actorId, security, application, (credentials) => { var credentialResources = credentials .Select( passwordCredential => { var resource = Convert(passwordCredential, urlHelper); var response = onFound(resource); return response; }) .ToArray(); return onFounds(credentialResources); }, () => onNotFound().AsTask(), () => onUnauthorized().AsTask(), (why) => onServiceUnavailable().AsTask())); }
public static async Task <IHttpResponse> Get( [OptionalQueryParameter(Name = ProvideLoginMock.extraParamState)] IRefOptional <Authorization> authorizationRef, [QueryParameter(Name = ProvideLoginMock.extraParamToken)] string token, IAzureApplication application, IProvideUrl urlHelper, IHttpRequest request, RedirectResponse redirectResponse, ServiceUnavailableResponse onNoServiceResponse, BadRequestResponse onBadCredentials, GeneralConflictResponse onFailure) { var authentication = EastFive.Azure.Auth.Method.ByMethodName( ProvideLoginMock.IntegrationName, application); var parameters = new Dictionary <string, string>() { { ProvideLoginMock.extraParamToken, token }, }; if (authorizationRef.HasValue) { parameters.Add(ProvideLoginMock.extraParamState, authorizationRef.id.ToString()); } return(await Redirection.ProcessRequestAsync(authentication, parameters, application, request, urlHelper, (redirect) => { var response = redirectResponse(redirect); return response; }, (why) => onBadCredentials().AddReason($"Bad credentials:{why}"), (why) => onNoServiceResponse().AddReason(why), (why) => onFailure(why))); }
public static async Task <IHttpResponse> ReplayAsync( [QueryId(Name = AuthorizationIdPropertyName)] IRef <Authorization> authorizationRef, Api.Azure.AzureApplication application, IInvokeApplication endpoints, IHttpRequest request, ContentTypeResponse <Session> onReplayed, NotFoundResponse onNotFound, ForbiddenResponse onAuthorizationFailed, ServiceUnavailableResponse onServericeUnavailable, ForbiddenResponse onInvalidMethod, GeneralConflictResponse onFailure) { return(await await authorizationRef.StorageGetAsync( async (authorization) => { var methodRef = authorization.Method; return await await Auth.Method.ById(methodRef, application, async(method) => { var paramsUpdated = authorization.parameters .Append(authorizationRef.id.ToString().PairWithKey("state")) .ToDictionary(); //var authorizationRequestManager = application.AuthorizationRequestManager; return await await Redirection.AuthenticationAsync( method, paramsUpdated, application, request, endpoints, request.RequestUri, authorizationRef.Optional(), async(redirect, accountIdMaybe, modifier) => { var sessionRef = Ref <Session> .SecureRef(); var session = new Session() { sessionId = sessionRef, account = accountIdMaybe, authorization = authorizationRef.Optional(), }; var responseCreated = await Session.CreateAsync(sessionRef, authorizationRef.Optional(), session, application, (sessionCreated, contentType) => { var response = onReplayed(sessionCreated, contentType: contentType); response.SetLocation(redirect); return response; }, onAlreadyExists: default,
public static async Task <HttpResponseMessage> DeleteByIdAsync( [Property(Name = IdPropertyName)] Guid passwordCredentialId, Context context, AzureApplication application, EastFive.Api.SessionToken security, UrlHelper urlHelper, NoContentResponse onDeleted, UnauthorizedResponse onUnauthorized, NotFoundResponse onNotFound, ServiceUnavailableResponse onServiceUnavailable) { return(await context.PasswordCredentials.DeletePasswordCredentialAsync(passwordCredentialId, security, application, () => { var response = onDeleted(); return response; }, () => onUnauthorized(), () => onNotFound(), (why) => onServiceUnavailable().AddReason(why))); }
public static async Task <IHttpResponse> Get( //[QueryParameter(Name = ProvideLoginMock.extraParamState)]IRefOptional<Authorization> authorizationRef, //[QueryParameter(Name = ProvideLoginMock.extraParamToken)]string token, IAzureApplication application, IProvideUrl urlHelper, IInvokeApplication endpoints, IHttpRequest request, RedirectResponse onRedirectResponse, ServiceUnavailableResponse onNoServiceResponse, BadRequestResponse onBadCredentials, GeneralConflictResponse onFailure) { var parameters = request.RequestUri.ParseQuery(); var method = EastFive.Azure.Auth.Method.ByMethodName( AzureADB2CProvider.IntegrationName, application); return(await EastFive.Azure.Auth.Redirection.ProcessRequestAsync(method, parameters, application, request, endpoints, urlHelper, (redirect, accountIdMaybe) => onRedirectResponse(redirect), (why) => onBadCredentials().AddReason($"Bad credentials:{why}"), (why) => onNoServiceResponse().AddReason(why), (why) => onFailure(why))); }
public async static Task <IHttpResponse> AuthorizeAsync( [QueryParameter(Name = "session")] IRef <Session> sessionRef, [UpdateId(Name = AuthorizationIdPropertyName)] IRef <Authorization> authorizationRef, [Property(Name = ParametersPropertyName)] IDictionary <string, string> parameters, Api.Azure.AzureApplication application, IInvokeApplication endpoints, IHttpRequest request, CreatedBodyResponse <Session> onCreated, NotFoundResponse onAuthorizationDoesNotExist, ForbiddenResponse onAuthorizationFailed, ServiceUnavailableResponse onServiceUnavailable, ForbiddenResponse onInvalidMethod, GeneralConflictResponse onFailure) { return(await await authorizationRef.StorageGetAsync( (authorization) => { return AuthenticateWithSessionAsync(authorizationRef, sessionRef, authorization.Method, parameters, application, endpoints, request, onAuthorized: (sessionCreated, redirect) => { var response = onCreated(sessionCreated, contentType: "application/json"); response.SetLocation(redirect); return response; }, onAuthorizationDoesNotExist: () => onAuthorizationDoesNotExist(), onServiceUnavailable: (why) => onServiceUnavailable().AddReason(why), onInvalidMethod: (why) => onInvalidMethod().AddReason(why), onAuthorizationFailed: why => onAuthorizationFailed().AddReason(why)); }, () => onAuthorizationDoesNotExist().AsTask())); }
public static async Task <HttpResponseMessage> QueryByIdAsync( [QueryParameter(Name = IdPropertyName)] Guid credentialId, Context context, AzureApplication application, EastFive.Api.SessionToken security, UrlHelper urlHelper, ContentResponse onFound, NotFoundResponse onNotFound, UnauthorizedResponse onUnauthorized, ServiceUnavailableResponse onServiceUnavailable) { return(await context.PasswordCredentials.GetPasswordCredentialAsync(credentialId, security, application, (passwordCredential) => { var passwordCred = Convert(passwordCredential, urlHelper); var response = onFound(passwordCred); return response; }, () => onNotFound(), () => onUnauthorized(), (why) => onServiceUnavailable().AddReason(why))); }
public static Task <HttpResponseMessage> PutAsync( [Property(Name = IdPropertyName)] Guid credentialId, [PropertyOptional(Name = TokenPropertyName)] string token, [PropertyOptional(Name = ForceChangePropertyName)] bool forceChange, [PropertyOptional(Name = LastEmailSentPropertyName)] DateTime?lastEmailSent, Context context, AzureApplication application, EastFive.Api.SessionToken security, NoContentResponse onUpdated, NotFoundResponse onNotFound, UnauthorizedResponse onUnauthorized, ServiceUnavailableResponse onServiceUnavailable, GeneralConflictResponse onFailure) { return(context.PasswordCredentials.UpdatePasswordCredentialAsync(credentialId, token, forceChange, lastEmailSent, security, application, () => onUpdated(), () => onNotFound(), () => onUnauthorized(), () => onServiceUnavailable(), (why) => onFailure($"Update failed:{why}"))); }
public static Task <HttpResponseMessage> CreatePasswordCredentialAsync( [Property(Name = IdPropertyName)] Guid credentialId, [Property(Name = ActorPropertyName)] Guid actorId, [PropertyOptional(Name = DisplayNamePropertyName)] string displayName, [PropertyOptional(Name = UserIdPropertyName)] string userId, [PropertyOptional(Name = TokenPropertyName)] string token, [PropertyOptional(Name = IsEmailPropertyName)] bool isEmail, [PropertyOptional(Name = ForceChangePropertyName)] bool forceChange, [PropertyOptional(Name = LastEmailSentPropertyName)] DateTime?lastEmailSent, Context context, AzureApplication application, UrlHelper url, EastFive.Api.SessionToken security, CreatedResponse onCreated, AlreadyExistsResponse onAlreadyExists, GeneralConflictResponse onUsernameAlreadyInUse, GeneralConflictResponse onInsufficentPassword, GeneralConflictResponse onUsernameAlreadyMappedToActor, UnauthorizedResponse onUnauthorized, ServiceUnavailableResponse onServiceUnavailable, GeneralConflictResponse onFailure) { var callbackUrl = url.GetLocation <EastFive.Api.Azure.Credentials.Controllers.OpenIdResponseController>(); return(context.PasswordCredentials.CreatePasswordCredentialsAsync( credentialId, actorId, displayName, userId, isEmail, token, forceChange, lastEmailSent, callbackUrl, security, application, () => onCreated(), () => onAlreadyExists(), (actorUsingId) => onUsernameAlreadyInUse($"Username already in use with Actor:{actorUsingId}"), () => onInsufficentPassword($"Password is insufficient."), () => onUsernameAlreadyMappedToActor($"Relationship already exists"), () => onUsernameAlreadyMappedToActor($"Login is already in use"), () => onUnauthorized(), () => onServiceUnavailable(), (why) => onFailure(why))); }
public static async Task <HttpResponseMessage> Get( AzureApplication application, UrlHelper urlHelper, HttpRequestMessage request, RedirectResponse onRedirectResponse, ServiceUnavailableResponse onNoServiceResponse, BadRequestResponse onBadCredentials, GeneralConflictResponse onFailure) { var parameters = request.RequestUri.ParseQuery(); parameters.Add(CredentialProvider.referrerKey, request.RequestUri.AbsoluteUri); var authentication = await EastFive.Azure.Auth.Method.ByMethodName( CredentialProvider.IntegrationName, application); return(await EastFive.Azure.Auth.Redirection.ProcessRequestAsync(authentication, parameters, application, request, urlHelper, (redirect) => onRedirectResponse(redirect).AddReason("success"), (why) => onBadCredentials().AddReason($"Bad credentials:{why}"), (why) => onNoServiceResponse().AddReason(why), (why) => onFailure(why))); }
public static async Task <IHttpResponse> PatchAsync( IAzureApplication application, IProvideUrl urlHelper, IHttpRequest request, IInvokeApplication endpoints, RedirectResponse onRedirectResponse, ServiceUnavailableResponse onNoServiceResponse, BadRequestResponse onBadCredentials, GeneralConflictResponse onFailure) { var parameters = request.RequestUri.ParseQuery(); parameters.Add(CredentialProvider.referrerKey, request.RequestUri.AbsoluteUri); var authentication = EastFive.Azure.Auth.Method.ByMethodName( CredentialProvider.IntegrationName, application); return(await EastFive.Azure.Auth.Redirection.ProcessRequestAsync(authentication, parameters, application, request, endpoints, urlHelper, (redirect, accountIdMaybe) => onRedirectResponse(redirect).AddReason("success"), (why) => onBadCredentials().AddReason($"Bad credentials:{why}"), (why) => onNoServiceResponse().AddReason(why), (why) => onFailure(why))); }
public async static Task <IHttpResponse> CreateAuthorizedAsync( [UpdateId(Name = AuthorizationIdPropertyName)] IRef <Authorization> authorizationRef, [Property(Name = MethodPropertyName)] IRef <Method> methodRef, [Property(Name = ParametersPropertyName)] IDictionary <string, string> parameters, [Resource] Authorization authorization, Api.Azure.AzureApplication application, IProvideUrl urlHelper, IInvokeApplication endpoints, IHttpRequest request, CreatedResponse onCreated, AlreadyExistsResponse onAlreadyExists, ForbiddenResponse onAuthorizationFailed, ServiceUnavailableResponse onServericeUnavailable, ForbiddenResponse onInvalidMethod) { authorization.accountIdMaybe = default; authorization.authorized = false; return(await await Auth.Method.ById(methodRef, application, (method) => { var paramsUpdated = parameters; //.Append( // authorizationRef.id.ToString().PairWithKey("state")) //.ToDictionary(); return Redirection.AuthenticationAsync( method, paramsUpdated, application, request, endpoints, request.RequestUri, authorizationRef.Optional(), (redirect, accountIdMaybe, discardModifier) => onCreated(), () => onAuthorizationFailed().AddReason("Authorization was not found"), // Bad credentials why => onServericeUnavailable().AddReason(why), why => onAuthorizationFailed().AddReason(why)); }, () => onInvalidMethod().AddReason("The method was not found.").AsTask())); }
public async static Task <IHttpResponse> CreateAuthorizedAsync( [WorkflowNewId] [QueryParameter(Name = "session")] IRef <Session> sessionRef, [WorkflowParameterFromVariable( Value = Workflows.PasswordLoginCreateAccount.Variables.Authorization)] [UpdateId(Name = AuthorizationIdPropertyName)] IRef <Authorization> authorizationRef, [WorkflowParameter(Value = "80a7de99-1307-9633-a7b8-ed70578ac6ae")] [Property(Name = MethodPropertyName)] IRef <Method> methodRef, [WorkflowObjectParameter( Key0 = "state", Value0 = "{{InternalAuthState}}", Key1 = "token", Value1 = "{{InternalAuthToken}}")] [Property(Name = ParametersPropertyName)] IDictionary <string, string> parameters, Api.Azure.AzureApplication application, IInvokeApplication endpoints, IHttpRequest request, [WorkflowVariable(Workflows.PasswordLoginCreateAccount.Variables.AccountId, PropertyName = Session.AccountPropertyName)] CreatedBodyResponse <Session> onCreated, AlreadyExistsResponse onAlreadyExists, ForbiddenResponse onAuthorizationFailed, ServiceUnavailableResponse onServiceUnavailable, ForbiddenResponse onInvalidMethod, GeneralConflictResponse onFailure) { return(await AuthenticateWithSessionAsync(authorizationRef, sessionRef, methodRef, parameters, application, endpoints, request, onAuthorized : (sessionCreated, redirect) => { var response = onCreated(sessionCreated, contentType: "application/json"); response.SetLocation(redirect); return response; }, onAuthorizationDoesNotExist : () => onAuthorizationFailed() .AddReason("Authorization does not exists"), onServiceUnavailable : (why) => onServiceUnavailable().AddReason(why), onInvalidMethod : (why) => onInvalidMethod().AddReason(why), onAuthorizationFailed : why => onAuthorizationFailed().AddReason(why))); //return await await Auth.Method.ById(methodRef, application, // async (method) => // { // var paramsUpdated = parameters // .Append( // authorizationRef.id.ToString().PairWithKey("state")) // .ToDictionary(); // //var authorizationRequestManager = application.AuthorizationRequestManager; // return await await Redirection.AuthenticationAsync( // method, // paramsUpdated, // application, request, // endpoints, // request.RequestUri, // authorizationRef.Optional(), // async (redirect, accountIdMaybe, modifier) => // { // var session = new Session() // { // sessionId = sessionRef, // account = accountIdMaybe, // authorization = authorizationRef.Optional(), // }; // var responseCreated = await Session.CreateAsync(sessionRef, authorizationRef.Optional(), // session, // application, // (sessionCreated, contentType) => // { // var response = onCreated(sessionCreated, contentType: contentType); // response.SetLocation(redirect); // return response; // }, // onAlreadyExists, // onAuthorizationFailed, // (why1, why2) => onServericeUnavailable(), // onFailure); // var modifiedResponse = modifier(responseCreated); // return modifiedResponse; // }, // () => onAuthorizationFailed() // .AddReason("Authorization was not found") // .AsTask(), // Bad credentials // why => onServericeUnavailable() // .AddReason(why) // .AsTask(), // why => onAuthorizationFailed() // .AddReason(why) // .AsTask()); // }, // () => onInvalidMethod().AddReason("The method was not found.").AsTask()); }