Rails API GraphQL server on Heroku not working - heroku

I've developed a Rails API backend that is set up with Graphql. When I'm running the server locally, I can make successful queries at http://localhost:3000/graphiql, but now that my app is deployed on Heroku, I cannot access my Graphiql on www.mysite.heroku.com/graphiql. Should I be able to? I'm now developing a React front end with Appolo trying to make queries to this API, and I can't seem to get it to work. I wonder if there is some kind of Heroku configuration I'm missing for Graphiql, and curious if the fact that I can't access www.mysite.heroku.com/graphiql is a dead giveaway that something is not working. Appreciate any incite.

Did you check your routes file? Does it look like this?
if Rails.env.development?
mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql"
end
If you want to access it you should remove the conditional or add and env like staging or production like:
if Rails.env.development? || Rails.env.staging?
mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql"
end

Related

ChunkLoadError after deployment to Production ( Vapor + AWS ) [Laravel & Vuejs]

I have developed a small appointment system using Laravel and Vue.js. For deployment purpose, this system has been deployed using Vapor(https://vapor.laravel.com/) and AWS. While the deployment has been successful i.e I can see the login page, login successfully and even perform some functions. However most of the navigation links are not working. The errors that I see in browser console : ChunkLoadError: Loading chunk XY failed at path https://hosturl/js/[file].js
Before deployment when I execute npm run production, I can see that files are being generated in root/public/js. But after deployment the system seems to be unable to find/access them. All the routing has been handled using vue router in the development.
Is this issue somehow related to webpack.mix.js or is the expected folder structure different after being deployed? Am I missing something important here that is needed for production? I am new to Vapor and AWS so help will be really appreciated.

Heroku not applying environment variable changes in Okta OAuth 2.0 PKCE VueJs app

I' trying to execute the OAuth 2.0 PKCE demo with a VueJs app outlined here:
https://developer.okta.com/blog/2019/08/22/okta-authjs-pkce
https://github.com/oktadeveloper/okta-auth-js-pkce-example
Once in the Heroku App I have these Environment Variables:
Everything appears to be running fine except for the fact that the variables OKTA_CLIENT_ORGURL and OKTA_OAUTH2_ISSUER were refering to an incorrect dev-XXXXXX address, the correct one is the one shown on the picture (dev-371167), before it was someone else's url (dev-739491) for some reason.
The problem is that after making the changes shown in the image to the correct dev url, it's still making the calls to the old dev-739491 url.
Heroku doesn't seem to be refreshing or making the desired changes in the app.
Am I missing an option to refresh? Is it possible to rebuild so it reads the new changes? Could the problem be in the code/build itself?
Thanks.
EDIT: As per the suggestion in the comment I turned the app off then on again and it still didn't make the changes.
This is what my screen looks like:
EDIT 2: I have since deployed the same app two more times and reading the build logs it assigns a random CLIENT_ID and URls. Each deployed app has a different pair of these. I don't know where they come from.
I wrote the Okta Heroku Add-On. I'm looking into the behavior you're seeing.
When you change the environment variables, heroku should restart your app automatically.
So, the two issues are that the environment variables didn't match you saw in Heroku didn't match with what you expected them to be and that the app doesn't seem to be picking up on the environment variables.
How did you know that dev-371167 was the correct org and that dev-739491 was incorrect?
When you say you deployed the app two more times, what exactly are you doing to deploy? Are you using the Heroku cli?

how to debug during API with laravel

I run my laravel app #localhost.
```php artisan serve --host=localhostIP```
On top I run an Andoid app with the same base URL.
Could anyone tell me how can I debug incoming API´s calls
like if BASEURL/users is called?
Furthermore, how can I log the happening events in the console
I am developing API's with laravel too, i do it this way:
composer require laravel/homestead to have it all in a vm 😉 see https://laravel.com/docs/master/homestead for more information, i use the "per project" installation
Download postman to have the best tool for sending querys to your api and to test your api quick -> https://www.getpostman.com (i use it free)
configure and run your homestead (it's not that complicated).
your homestead is fit with php and xdebug enabled
i am using phpStorm and have my vagrant setup as deployment target
"listen to debug" with phpstorm
to your GET requests, add a queryparam XDEBUG_SESSION_START=PHPSTORM
i can debug my api now 😉
i also wrote https://logcrawler.de to receive the log informations of all my api's and all my server 🤩
I hope, i could help you a little bit
This is my way, but I think it's not good!
Create router api in config/web, Eg:
router/api: Route::post('/check_api', [CheckController::class, 'testFunc'])->name('api.check_api');
web/api: Route::post('test/check_api', [CheckController::class, 'testFunc'])->name('test.check_api');
Create a post by form or ajax in one resource/view like index
Go to page, and debug with phpstorm
You can use logging feature of Laravel. Apply Logs on entry point of application to test whether API url is hitting or not.
use postman
https://www.getpostman.com/downloads/
it's an excellent thing very much usefull

Remotely access Parse dashboard

I managed to configure stand alone Parse server for my Android app using ubuntu server and mongoDB. And now Parse released its open source dashboard for parse server which I am able to setup but getting error in accessing it remotely.
As it says "Parse Dashboard can only be remotely accessed via HTTPS". I have almost no experience of developing web app. I have tried changing http to https in url but it didn't worked!
I have also tried adding username and password for basic auth, but it didn't worked either! Here's link for parse dashboard
https://github.com/ParsePlatform/parse-dashboard
Try starting the dashboard like this:
export PARSE_DASHBOARD_ALLOW_INSECURE_HTTP=1
npm run dashboard
I have the same problem. I set up the parse server through heroku. I tried antsyawn's suggestion, it did not work. The github to parse-dashboard just updated a little more.
Now you should:
npm install -g parse-dashboard
parse-dashboard --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName
They did suggested to add --allowInsecureHTTP=1
Nevertheless, I tried all that as well and its not working. May be you can try this too since you set up your server differently(it might work).
im working with ParseServer And ParseDashboard to Start we cant create confused about two.
For me , more important is ParseDashboard, And yes you can acess Remotely, firstly you need create a hack direct in code to do that.
To run parse dashboard without problems follow this steps.
git clone git#github.com:ParsePlatform/parse-dashboard.git
cd parse-dashboard
npm install
After this! after!...
npm run dashboard
This screen will be showed to you...
When this image is running you can acess by url your serverIp:4040 will show dashboard.
dashboard is running.
The answer from #xiaowoo worked for me. For a visual, I watched this video
Install Parse Server and Parse Dashboard to Digital Ocean
In summary, here is what I ended up running:
parse-dashboard --appId MyApp --masterKey mysupersecretmasterkey --serverURL "https://198.58.10.23/parse" --appName TestApp --allowInsecureHTTP=1
Server response:
The dashboard is now available at http://0.0.0.0:4040/
Browse to your dashboard:
http://198.58.10.23:4040

Deploy WSO2 Enterprise App Store in EC2 using ELB

I am deploying the WSO2 Enterprise App Store into EC2 behind an elastic load balancer (ELB) and having some trouble getting things configured properly.
I have configured $INSTALL_PATH/repository/conf/carbon.xml with the proper HostName and MgtHostName of the ELB DNS name and I can get to the front-end of the app store and to the admin console.
I am unable to:
get user registrations working throuth the front end app store
get to the back-office console
The issue appears to be in routing requests to the identity service. I get an error like the following:
You are now being redirected to Identity Server. If the redirection fails, please click on the button below.
I then get a timeout on the redirect to this RFC1918, non-routed, address:
https://10.x.x.x:9443/adminsamlsso
I see no errors in the logs on startup or throughout execution of the application.
How can I configure this application such that all requests are re-routed through the AWS ELB (not the WSO2 load balancer) and not through the direct, local, IP address?
Please modify following configurations as well,
Update the AssertionConsumerService property for all apps(store, publisher, social) within /repository/conf/sso-idp-config.xml
You can find few jaggery apps within /repository/deployment/server/jaggeryapps/ directory. Each app has its own json config file within config directory.
Eg :- for store app /repository/deployment/server/jaggeryapps/store/config/store.json
You have to update the identityProviderURL property within ssoConfiguration in those apps as well.(store, publisher and social)
If you are using ES-1.0.0 It's better if you can move to the latest 1.2.0 M2.
We also faced similar issue and now fixed in the master branch.
If you need to continue with the same 1.0.0 you can get rid of this issue by updating,
<ES_HOME>/repository/deployment/server/jaggeryapps/store/controllers/login.jag, <ES_HOME>/repository/deployment/server/jaggeryapps/publisher/controllers/login.jag
<ES_HOME>/repository/deployment/server/jaggeryapps/store/controllers/logout.jag, <ES_HOME>/repository/deployment/server/jaggeryapps/publisher/controllers/logout.jag
You have to update the postUrl in above four files correctly.
NOW : postUrl = "https://" + process.getProperty('carbon.local.ip') + ":" + process.getProperty('https.port');
It should be something like https://localhost:9443/
At the end post URL should be something like https://localhost:9443/admin/samlsso
<form method="post" action="<%=postUrl%>/admin/samlsso">

Resources