cancel
Showing results for 
Search instead for 
Did you mean: 

display Messaage in portal after user authenticated

Former Member
0 Kudos
323

Hi

We have an situation to display portal message to all the successful login users, The Portal message should not conatain any navigational links and should have buttons to agree or disagree, the agree shall take them to the default framework with all the business roles, For Which we are following the document

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/40842f83-3a95-2c10-bc81-a60fcae11...

I have tried to edit the msathead.par file with html code provided, but not sure how and where to place, Should i delete the standard headeriview.jsp and create a new with only html code, or shall i keep the standard headeriview.jsp and copy the same in new headeriview with the html code in the last.

Is my understnading right? Can i acheieve my requirement through the document provided in the link?

Apprecitae time and help.

Regards,

Prabhakar

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Prabhakar,

Check this!

Planning for an article too, would be helpful for others!

Thanks,

MS

Former Member
0 Kudos

Hi Naga,

Thanks for following up and appreciate, The Video exactly shows what we intended to do. I am not sure how you achieved this, But we had intermediate solution for the requirement, This is how we did:

1)     Created an component in NWDS with HTML Code with "I Agree" redirects to irj/portal and "DisAgree" to Logout in header.jsp

2)     upload the same to the portal and navigation looks likes http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default

3)     The same navigation is redirected via SAP Web Dispatcher placed in DMZ

icm/HTTP/redirect_0 = PREFIX=/, PROT=https, TO=/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default, HOST=www.ZZZZ.com

As and when user clicks on the link it is by default redirects to the component page and after hitting the I Agree button it will directs again to /irj/portal.

Could you as well elaborate the video link how to achieve the same, Eager to know the alternate solution without having the WebDispatcehr redirect.

It's an great idea to have an article on the same.

Regards

Prabhakar

Former Member
0 Kudos

Hi Prabhakar,

Redirecting using Web Dispatcher is too another alternative solution with Agree to /irj/portal and DisAgree to Logout ... this approach was the last ones I was planing for... but anyways good work!

And your guess is correct, my solution is without using the dispatcher. Here it goes:

Configurtaion:

1. Create an iView with the deployed HTML (PAR) page

2. Create a new Desktop and assign only this html-iview to it

3. Make the below assignments in your master rule collection

REC Circle: you've to ensure the logging users/group assigned a defaultDesktop or projectSpecificDesktop, b'coz this desktop has all the framework elements needed to work with.

BLACK Circle: this will redirect the users/group to the one created in step.2

4. Now coming to the code of onAction even of your Submit button in the html:

"/irj/servlet/prt/portal/prtroot/pcd!3aportal_content!2fevery_user!2fgeneral!2fframeworkpage?sap-config-mode=true"

Implementation:

5. Now the user login to EP using /irj/portal itself... there is no change in it.

6. Based on the rule collection.. the portal framework will redirect him to PLMHD (post logon) desktop by default. And this is a place we will show our terms & condistions stuff for users to click on either Agree or DisAgree.

7. And the magic-logic here is ... when the user clicks on Agree button it will redirect to the deafultDesktop or projectDesktop which you need the users to work on as per the code specified in point.4!

8. Now you are on your regular framework as-usual!

Logic: The user logged into customDesktop first using /irj/portal and then redirected to required defaultDesktop after the post-logon-custom-message page displayed.

If this logic wouldn't have worked for me, even I would've gone for dispatcher approach!

Hoping that you've got the solutions needed!

Thanks,

MS

Former Member
0 Kudos

Hi Naga and Prabhakar,

These are both nice solutions. I have to say that I think Prabhakars is more flexible since after the user accepts the agreement they are redirected to the normal /irj/portal which then allows for the standard logic to assign the right desktop. I think using Naga's solution the standard rules are bypassed and you would have to build in the logic to redirect to the right desktop yourself.

Anyway great work and thanks for sharing.

Simon

Former Member
0 Kudos

Hi Naga,

I have read your artical it is very good and self explanatory.

Wondering if you could help us on the Dektop rules in portal, I have tried creatin couple of frameworks and Desktops, However i find diffulty in settinup the desktop rules to work.

As you mentioned earlier i have done all the configuration, But the desktop rules were not getting in place for the users mentioned, i could only see the default desktop to the all the users.

Would you able to help me in pointing to the comprehensive document for creating desktop rules.

Regards

Prabhakar

nicolasarielsou
Explorer
0 Kudos

Hi Naga and Prabhakar,

    Thanks for all the information that post here, I have a question for both. In both solution I understand that the user had to agree "Terms and Condition" on every login. Have you thought any solution to store a flag or value on user profile to avoid this issue?

   I am working on that but I am not sure how can I get the user profile values. Any advice?

Regards,

Nicolás

Former Member
0 Kudos

Hi Nicolás,

I've no idea what are the options you are working on... but i would say that you can just maintain a small table in Portal DB to check the flag against the user and have your own condition to bypass the T&C view.

Thanks,

MS

Former Member
0 Kudos

Prabhakar,

Hey its done... finally!! And it goes this way:

Login to Portal > Custome Login Message for Agree/Disagree and onclick of 'Go' button > takes you to DefaultDesktopPage with all framework elements.

I would post you the navigating video ... soon and comment whether its acceptable or not!

Thanks,

MS

Former Member
0 Kudos

Hi,

i think coding in welcome page will be  more easy for you(if every authenticated user must have less one role). use WD4A or Java  that is no problem, just add a pop-up code to your welcome page.

Best regards.

Former Member
0 Kudos

Hi Prabhakar,

Did you tried testing both pre & post logon scenarios as described in the document?

If yes and successful in testing post logon scenario (this is what you need) .., then do as its very clearly explained in page nos. 10 & 11.. you just need to create HeaderiView_temp.jsp as cope of original and place your custom code in HeaderiView.jsp. No need to deleted anything, and work on HeaderiView.jsp file to achieve your requirement.

Thanks,

MS

Former Member
0 Kudos

Thanks for your helpful answer,

However, We are only trying to achieve the post portal login option, I havent tried the Pre Portal login.

As explained in the documnet in page 10 & 11 i have copied the html code on top of the headeriview.jsp file. JAR files were also included.

The document suggests "Deploy the code by exporting the par file to the portal server and run it. "

I have deployed the PAR file and created the iview on "default" component of PAR file, When i checked for the preview it is thorwing for portal runtime exception,

Please advise on how to proceed further.

Regards,

Prabhakar.

Former Member
0 Kudos

Can you post the log-trace of the exception? And what is the code written in JSP? (i would advice you to test the code as-is first)

Former Member
0 Kudos

i am using same html code but i am getting portal exception error. please find the trace .

[EXCEPTION]
{0}#1#com.sapportals.portal.prt.component.PortalComponentException: Error in init method
Component : MessagePostLogon.default
        at com.sapportals.portal.prt.component.PortalComponentContext.init(PortalComponentContext.java:251)
        at com.sapportals.portal.prt.core.broker.PortalComponentContextItem.refresh(PortalComponentContextItem.java:271)
        at com.sapportals.portal.prt.core.broker.PortalComponentContextItem.getContext(PortalComponentContextItem.java:316)
        at com.sapportals.portal.prt.component.PortalComponentRequest.getComponentContext(PortalComponentRequest.java:387)
        at com.sapportals.portal.prt.connection.PortalRequest.getRootContext(PortalRequest.java:488)
        at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:607)
        at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)
        at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:540)
        at java.security.AccessController.doPrivileged(AccessController.java:246)
        at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:423)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
        at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
        at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
        at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
        at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
        at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
        at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
        at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
        at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
        at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
        at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
        at java.security.AccessController.doPrivileged(AccessController.java:219)
        at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104)
        at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)
Caused by: com.sapportals.portal.prt.core.broker.PortalComponentInstantiationException: Could not instantiate implementation class com.sapportals.portal.navigation.Head
eriView of Portal Component MessagePostLogon.default because: Could not find implementation class
        at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getInstanceInternal(PortalComponentItemFacade.java:242)
        at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getComponentInstance(PortalComponentItemFacade.java:160)
        at com.sapportals.portal.prt.core.broker.PortalComponentItem.getComponentInstance(PortalComponentItem.java:732)
        at com.sapportals.portal.prt.component.PortalComponentContext.getComponent(PortalComponentContext.java:103)
        at com.sapportals.portal.prt.component.PortalComponentContext.init(PortalComponentContext.java:242)
        ... 26 more
Caused by: java.lang.ClassNotFoundException: com.sapportals.portal.navigation.HeaderiView
        at java.lang.Class.forNameImpl(Native Method)
        at java.lang.Class.forName(Class.java:152)
        at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getInstanceInternal(PortalComponentItemFacade.java:228)
        ... 30 more

Former Member
0 Kudos

Ok expected.. let me test in my SBox and let you know!

Former Member
0 Kudos

Hi Naga,

I found the issue because it is in the par file ".jar" files were missing in lib folder.

After successfully deploying the PAR on to the server i am able to view the content via calling an iView.

Now the issue is the user should be redirected staright to the link  http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default after successfull login. Once user sees the page and clicks on "go" it should again redirect to the regular portal framework. Please advise on how to achive the redirection.

Regards

Prabhakar

Former Member
0 Kudos

Ohh its the JARs issue..! For next, you probably need to add this iView to the default (or create one for testing) Desktop Page replacing the original ..[just uncheck the visible property of the original and add this iView and make it visible] doing so it should works as per the doc.

-Naga

Former Member
0 Kudos

Don't replace anything in defaulDesktop page.. i'm working on it.. will let you know!

-Naga

Former Member
0 Kudos

Prabhakar,

Couple of things here..., consider them if you've not met with your requirement:

- you should allow/ask your users to login ONLY with the below url

http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default. this would ask them to give a login to get inside the portal. So check with your client/users the same, and if they are feasible with the option just implement it .. as its already done.

- i've given few trials with the peice of code(PDF), using Quick Links for iView, customized desktop loaded only with this PostLogon page..! But non of them are a full-proof to deliver it to the clients.

- or a work-around: why dont you place an ALERT in masthead that would load the TEST/MESSAGE that you want the users to read and take action (Agree

or Disagree) .. onClick on Agree show-them the desktop page otherwise onClick on Disagree call the logOff function or close the window.

Hope the above is helpful!

-MS

Former Member
0 Kudos

Hi Naga,

Greatly appreciate the effort and time you spent for this.

Option1:We have Logon module set for the user authentication, So Log in page would not be appeare for the end users as they have allready authenticated.

Option2: Alert and popups were tried but it wont serve the purpose.

I have also tried creating two Frameworks and desktops, The first one will be without any TLN and second one with all the default settings, However we thought achieving this by iview with desktop rules in place, Apparantly I could not achieve, May be i do not know how to set the desktop rules correctly for direct from one framework to another.

As well i have tried with creating HTML and Bex iviews and tried to place that an initial view as dialog window but i could not achieve it to populate without any event.

If you have any other thoughts or if my requirement can be achieved by any other solution please do let me know.

Regards,

Prabhakar.

Former Member
0 Kudos

Hi,

I've suggested ALERS because.. its similar to display message pup-ups bot not as web-page. Can you share a brief of what you've done with HTML?

Thanks, MS