-
1. Re: Dashboard configuration - drag and drop
theute Feb 10, 2009 4:09 AM (in response to diparc)what i want to do is simple, copy the page to the dashboard the first time he accesses his dashbord and always point user to his dashboard.
First time a user access the dashboard he gets a copy of the "template" portal. Which is defined in XML files for feeding.
To redirect the user directly to the dashboard there is an option in the configuration file (jboss-portal.sar/conf/config.xml iirc). Check the documentation -
2. Re: Dashboard configuration - drag and drop
diparc Feb 10, 2009 4:44 PM (in response to diparc)Thanks for a quick response.
I modified the jboss-portal.sar/conf/config.xml to change the following property to "dashboard"
dashboard
Also, i noticed that the "template" portal is defined in "/jboss-portal.sar/conf/data/default-object.xml"
but it seems that it copies only the "template" portal defined here
I have a separate war file for my application and that has all xml files specific to the portal I am building - i.e., it has its own portal-object.xml which is loaded correctly and i can access the pages in this portal -
I renamed my portal defined in the portal-object.xml to "template" but when I access the dashboard it has the one defined in default-object.xml.
I am going to try to remove the "template" portal from default-object.xml
so that it has only one template portal and see if that will work -
I had another question -
it seems like there can be many portals running under a portal server but there can only be one dashboard. can there be more than one dashboard ?
Thanks,
D -
3. Re: Dashboard configuration - drag and drop
diparc Feb 11, 2009 10:14 AM (in response to diparc)
Removing the template portal from default-object.xml did not work. it gives me a http 404 when i try to access the dashboard url
http://server:port/portal/auth/dashboard
I have defined my own template portal in portal-object.xml - that file is loaded because i can access the template portal using the portal url but the dashboard url gives me a http 404.
Also, can i have more than one dashboard in the application ? -
4. Re: Dashboard configuration - drag and drop
vivek_saini07 Feb 11, 2009 10:29 AM (in response to diparc)We have achieved something similar in our project.
"diparc" wrote:
Thanks for a quick response.
I modified the jboss-portal.sar/conf/config.xml to change the following property to "dashboard"
<entry key="core.login.namespace">dashboard</entry>
Also, i noticed that the "template" portal is defined in "/jboss-portal.sar/conf/data/default-object.xml"
but it seems that it copies only the "template" portal defined here
On dashboard, they always copy "template" for every user. It is hard coded in CustomizationManagerService(check getDashboard() method)). It is a MBean so it is plugable. You can modify it according to your need."diparc" wrote:
I have a separate war file for my application and that has all xml files specific to the portal I am building - i.e., it has its own portal-object.xml which is loaded correctly and i can access the pages in this portal -
I renamed my portal defined in the portal-object.xml to "template" but when I access the dashboard it has the one defined in default-object.xml.
I am going to try to remove the "template" portal from default-object.xml
so that it has only one template portal and see if that will work -
I had another question -
it seems like there can be many portals running under a portal server but there can only be one dashboard. can there be more than one dashboard ?
Yes you can modify this mbean as you want. In our project we copied the different portal to Dashboard according to group association of user. Every user see's different dashboard according to their group. -
5. Re: Dashboard configuration - drag and drop
diparc Feb 12, 2009 10:53 AM (in response to diparc)Thanks vivek_saini07 - luckily i am not alone -
I figured out the problem with the dashboard url - my template portal did not have a default page. now it has a default page and it copies the contents of my custom template portal to the dashboard. so i am good so far with a single dashboard and a single portal.
in my case I need a different dashboard depending on what the user clicks on - I dont know if i can do this based on some request parameter i.e., depending on some request param, i copy different portal to the dashboard ?
even if this is possible, when i am copying the portal to the dashboard, wouldn't the user's preferences/where he placed the windows,etc., be lost when i do this -
Thanks,
D -
6. Re: Dashboard configuration - drag and drop
vivek_saini07 Feb 12, 2009 12:34 PM (in response to diparc)n my case I need a different dashboard depending on what the user clicks on - I dont know if i can do this based on some request parameter i.e., depending on some request param, i copy different portal to the dashboard ?
Yes it is achievable u can get request object in getDashboard() method using PolicyContext.getContext("javax.servlet.http.HttpServletRequest");
even if this is possible, when i am copying the portal to the dashboard, wouldn't the user's preferences/where he placed the windows,etc., be lost when i do this -
If u use copy(xx,xx,true) of PortalObject it will perform deep copy means portal will be copied along with its page and window with all properties. Otherwise u can use getDeclaredProperty() and setDeclaredProperty() of PortalObject to copy window order/window region/page layout/page theme etc explicitly. -
7. Re: Dashboard configuration - drag and drop
diparc Feb 19, 2009 3:41 PM (in response to diparc)I have set aside the multiple dashboard, will be working on it after sometime.
currently, I am configuring authentication for JBoss portal and using the same authentication that is used by my web app -
Authentication works fine when i access the portal page.
However it gives me a Http 500 No authenticated user when i try to use the dashboard url(http://servername:port/portal/auth/dashboard)
I noticed the bug JBPORTAL-2178. I also modified web.xml in portal-server.war by adding /dashboard/* as suggested even though i am not accessing the dashboard like /dashboard.
still it did not help. I get the same Http 500 No authenticated user
am i missing something ?
I have also commented on the bug and started a new topic on this yesterday, but no response so far. hoping someone is watching this post -
thanks in advance -
8. Re: Dashboard configuration - drag and drop
vivek_saini07 Feb 20, 2009 9:03 AM (in response to diparc)see user must be authenticated against portal-server.war, means against JBossPortal application.
for user authentication we changed in following files
login.jsp
login-config.xml
loginModule defined in login-config.xml -
9. Re: Dashboard configuration - drag and drop
diparc Feb 20, 2009 10:02 AM (in response to diparc)I modifed all those files -
we use directory smart and I am using a custom login module for authentication that extends UsernamePasswordLoginModule.
I am not using any of the *IdentityLoginModule
is it required to use one of the *IdentityLoginModules ?
in web.xml of portal-server.war, I have changed the role name from "Authenticated" to "BetaUI". this role is defined in directory smart.
However, I only have assigned this role to one user. I intend only to provide this user the portal functionality for now.
I read in the docs that all users need to be assigned this role, but I am not absolutely sure if this is required ?
I dont know what I am doing wrong - I have the portal pages authenticating correctly, but get this 500 no auth user error just for dashboard
Also, if i set a breakpoint in the custom class that extends UsernamePasswordLoginModule, and access the dashboard, i see that the credentials are obtained correctly from directory smart.
D -
10. Re: Dashboard configuration - drag and drop
vivek_saini07 Feb 20, 2009 10:52 AM (in response to diparc)what we did is
after authentication we created a new user in user module of jboss portal and assigned a role from MembershipModule of jboss portal.userModule = (UserModule)new InitialContext().lookup(userModuleJNDIName); membershipModule = (MembershipModule)new InitialContext().lookup(membershipModuleJNDIName);
user = getUserModule().createUser(userName, inputPassword);
getMembershipModule().assignRoles(user, roleSet);
-
11. Re: Dashboard configuration - drag and drop
sambit_dixit Feb 20, 2009 12:40 PM (in response to diparc)Hi,
By design, Jboss Portal can be accessed by any user where as dashboard are user specific. That is why you can when accessing portal you can access, http://abc/portal/portal/yourportalname where as for dashboard it is http://abc/portal/auth/dashboard. In Portal-Server.war WEB-INF/web.xml, you might see entries to for the servlet mapping to auth, authsec. These are first level of FORM authentication which is handled through login.jsp. Then internally it checks if the same user under specific role has access to the dashboard or not. What you have achieved so far is authenticating the user against a specific LDAP or DB. Jboss internally maintains it set of roles and users in JBP tables. It needs to be validated against them as well to render the dashboard correctly. To achieve this you need to use the following modules exposed by Jboss. You can make a look up these services through JNDI.
java:portal/UserProfileModule, java:portal/RoleModule,java:portal/MembershipModule,java:/TransactionManager.
Make sure that you use transaction manager before using the UserProfile, Role or MemberShip modules.
What you can do is write a filter and add the filter to web.xml of Portal-Server.war. Inside the filter, check if the user in the request is present in Jboss using UserProfile if not create it and assign to appropriate Role using Membership module.
Hope this helps.
Regards
-Sambit -
12. Re: Dashboard configuration - drag and drop
diparc Feb 22, 2009 7:20 PM (in response to diparc)Thanks Sambit & Vivek!
I wrote a servlet filter like you suggested and I am creating the user when the user is not found, also creating the role when not found, and assigning role to user using the membership module -
however, I am getting an exception when it tries to create the user in the portal database -
org.hibernate.HibernateException: Unable to locate current JTA transaction
org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:61) org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:544) org.jboss.portal.identity.db.HibernateUserModuleImpl.getCurrentSession(HibernateUserModuleImpl.java:298) org.jboss.portal.identity.db.HibernateUserModuleImpl.createUser(HibernateUserModuleImpl.java:166)
JBossPortalAuthorizationFilter.createUserAndAssignPortalRole(JBossPortalAuthorizationFilter.java:83)
seems like i need to start and end hibernate transactions -
I am using methods in UserModule, RoleModule and MembershipModule only to achieve this-
you mentioned about the TransactionManager, I am not using that -
can you please advise what i need to do here -
here is the code snippet from doFilter() -... ... //create user and assign roles if user is not defined in portal db try { createUserAndAssignPortalRole(userName); filterChain.doFilter(httpRequest, response); } catch (IllegalArgumentException e) { this.filterConfig.getServletContext().log("Invalid user: " + userName); e.printStackTrace(); denyAccess(userName, httpResponse); return; } } private void createUserAndAssignPortalRole(String userName) throws IllegalArgumentException, ServletException { try { if(!isUserInPortalDB(userName)) { this.filterConfig.getServletContext().log("user not found in portal db, creating user: " + userName); User user = getUserModule().createUser(userName, ""); //not storing user passwords in database getMembershipModule().assignRoles(user, getRequiredRoleSet()); } } catch (IdentityException e) { this.filterConfig.getServletContext().log("could not assign portal role to user: " + userName); throw new ServletException(e); } }
thanks once again for your help,
D -
13. Re: Dashboard configuration - drag and drop
diparc Feb 22, 2009 8:13 PM (in response to diparc)I was looking at other posts in the forum and figured that I do need to manage hibernate transactions. I modified the code to do that and it is working now.
Hoping this is the right way though, please share your thoughts -
I am leaving the code snippet here -private void createUserAndAssignPortalRole(String userName) throws IllegalArgumentException, ServletException { Session session = null; Transaction transaction = null; try { session = getIdentitySessionFactory().openSession(); transaction = session.beginTransaction(); if(!isUserInPortalDB(userName)) { this.filterConfig.getServletContext().log("user not found in portal db, creating user: " + userName); User user = getUserModule().createUser(userName, ""); //not storing user passwords in database getMembershipModule().assignRoles(user, getRequiredRoleSet()); } } catch (IdentityException e) { this.filterConfig.getServletContext().log("could not assign portal role to user: " + userName); throw new ServletException(e); } finally { if (transaction != null) transaction.commit(); if (session != null) session.close(); } }
-
14. Re: Dashboard configuration - drag and drop
jssteux Feb 23, 2009 3:38 AM (in response to diparc)Hello,
Here is a common way to create a transaction :
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
InitialContext ctx = new InitialContext();
UserTransaction tx;
tx = (UserTransaction) ctx.lookup("UserTransaction");
tx.begin();
...
tx.commit();
Jean-sébastien Steux