예제 #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private static IApiResponse PostLogin(IApiRequest pApiReq)
        {
            if (pApiReq.GetFormValue(LoginCancel, false) != null)
            {
                return(PostLoginCancel(pApiReq));
            }

            if (pApiReq.GetFormValue(LoginLogout, false) != null)
            {
                return(PostLoginLogout(pApiReq));
            }

            if (pApiReq.GetFormValue(LoginLogin, false) != null)
            {
                return(PostLoginLogin(pApiReq));
            }

            if (pApiReq.GetFormValue(LoginAllow, false) != null)
            {
                return(PostLoginScope(pApiReq, true));
            }

            if (pApiReq.GetFormValue(LoginDeny, false) != null)
            {
                return(PostLoginScope(pApiReq, false));
            }

            return(null);
        }
예제 #2
0
        /*--------------------------------------------------------------------------------------------*/
        private static IApiResponse PostLoginLogin(IApiRequest pApiReq)
        {
            Action <IApiResponse> getResp = (apiResp => {
                string user = pApiReq.GetFormValue(LoginUsername, true);
                string pass = pApiReq.GetFormValue(LoginPassword, true);
                bool rem = (pApiReq.GetFormValue(LoginRememberMe, false) == "1");

                string clientId = pApiReq.GetQueryValue(LoginClientIdParam, false);
                string redirUri = pApiReq.GetQueryValue(LoginRedirectUriParam, false);

                var op = new OauthLoginPostOperation();
                OauthLoginResult result = op.ExecuteLogin(pApiReq.OpCtx, new OauthLoginTasks(),
                                                          clientId, redirUri, user, pass);

                if (result.ShowLoginPage)
                {
                    apiResp.Html = new LoginPageView(result).ToHtml();
                    return;
                }

                if (result.Code != null)
                {
                    apiResp.RedirectUrl = BuildRedirectUri(result.Redirect, result.Code,
                                                           pApiReq.GetQueryValue(LoginStateParam, false));
                }
                else
                {
                    apiResp.Html = new LoginScopeView(result).ToHtml();
                }

                apiResp.SetUserCookie(result.LoggedUserId, rem);
            });

            var exec = new CustomExecutor(pApiReq, getResp, OnLoginException);

            return(exec.Execute());
        }
예제 #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private static IApiResponse Execute <TDom, TApi, TOp>(IApiRequest pApiReq)
            where TDom : Vertex
            where TApi : FabVertex
            where TOp : ICreateOperation <TDom, TApi>, new()
        {
            Func <IList <TApi> > getResp = (() => {
                string json = pApiReq.GetFormValue("Data", true);
                var o = new TOp();

                TDom result = o.Execute(
                    pApiReq.OpCtx, new CreateOperationBuilder(), new CreateOperationTasks(), json);

                return(new List <TApi> {
                    o.ConvertResult(result)
                });
            });

            var exec = new FabResponseExecutor <TApi>(pApiReq, getResp);

            return(exec.Execute());
        }