////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public OauthLoginResult ExecuteLogin(IOperationContext pOpCtx, IOauthLoginTasks pTasks,
                                             string pClientId, string pRedirUri, string pUsername, string pPassword)
        {
            var result = new OauthLoginResult();

            App app = ValidateAndGetApp(pOpCtx, pTasks, pClientId, pRedirUri);

            result.AppId   = app.VertexId;
            result.AppName = app.Name;

            User user = pTasks.GetUserByCredentials(pOpCtx.Data, pUsername, pPassword);

            if (user == null)
            {
                result.ShowLoginPage  = true;
                result.LoginErrorText = "The Username or Password was incorrect.";
                return(result);
            }

            result.LoggedUserId   = user.VertexId;
            result.LoggedUserName = user.Name;

            Member mem = pTasks.GetMember(pOpCtx.Data, app.VertexId, user.VertexId);

            if (mem == null)
            {
                mem = pTasks.AddMember(pOpCtx,
                                       new CreateMemberOperation(), app.VertexId, user.VertexId);
            }

            if (mem.OauthScopeAllow == true)
            {
                result.Code     = mem.OauthGrantCode;
                result.Redirect = pRedirUri;
            }

            return(result);
        }