Question

How to show different login screens in Shared env

Hi,

Is it possible to show different login screens for different applications in a shared env?

Do we need to use different urls/servlets for this?

Many Thanks,

Aman

***Edited by Moderator: Lochan to update platform capability tags***

Comments

Keep up to date on this post and subscribe to comments

November 17, 2019 - 8:17pm

Hi,

I doubt this can be done, as the requestor would be at browser level. If two different IP were there then maybe it would have been possible.

 

November 17, 2019 - 9:37pm

 

One way to achieve this is by configuring different URL for different applications:

When you hit the URL, Pega creates an unauthenticated browser requestor with an unauthenticated access group specified in the BROWSER Requestor Type for that system name.

If you have different nodes for different applications, then you can create a different system name for each node and have custom screens for every system name.  Login screen customization will be based on the system name. Pega loads the browser requestor based on system name and based on this requestor we get the login screen associated to the production ruleset mentioned in the access group associated with this requestor. Please find the below link for customising login screen. 

https://community.pega.com/knowledgebase/articles/user-interface/customizing-pega-7-login-screen

December 1, 2019 - 7:44pm
Response to Vikash Karn

Thanks Vikas, I checked this solution with Pega ,they said it is not valid. There will be lot of config issues if we change the System name as PDC,Kibana etc are configure to work based upon System names. 

November 18, 2019 - 5:43am

Once I did the same but in a tricky way. You could try if you would not find any better solution.

There's a html rule Web-Login in pega which handles the login screen. You could add all your screens in that rule, but hide them but default (put them in <div style="display:none"></div> tags).

Then, create a function in Web-Login:

  1. function get(name){
  2. if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
  3. return decodeURIComponent(name[1]);
  4. }

Lets say, your applications is App1 and App2. So there would be 2 urls:

http://.../prweb?appName=App1

http://.../prweb?appName=App2

Using the function you will get an application name (get('appName')). And based on appName you will show specific <div> in Web-Login rule.

It's kinda workaround, but it works! :)

 

Better solution may be to look into web.xml and to play with different dispatchers. But im not sure it will work

December 1, 2019 - 7:45pm
Response to vaspoz

Thanks a lot for the solution, i'll give it a go and let you know.