Startseite nach Login anpassen

cancel
Showing results for 
Search instead for 
Did you mean: 
blodnatt
Member II

Startseite nach Login anpassen

Hey Leute,

ich wollte die Startseite der Benutzer so anpassen, dass wenn sie im Projekt xyz sind, die zum Projekt Dashboard weiter geleitet werden. Diejenigen, die nicht in dem Projekt mitarbeiten, werden zu ihrem User Dashboard weiter geleitet.

Ich weiß, dass ich dafür die site-index.jsp anpassen muss, bloss ich weiß nicht, wie ich rausfinden kann, ob der User in dem Projekt mitarbeitet oder nicht.

Es muss ja auf jedenfall eine Abfrage stattfinden wie dieses hier:

if(userid.containsProject("xyz"))
{
       response.sendRedirect(request.getContextPath() + "/page/site/xyz");
}
else
{
       response.sendRedirect(request.getContextPath() + "/page/user/" + URLEncoder.encode(userid) + "/dashboard");
}

Könnte mir da vielleicht wer bei helfen?  Smiley Surprisedops:

Mfg
6 Replies
jpfi_4454
Member II

Re: Startseite nach Login anpassen

Hi,
es gibt zwei Wege:
A) du musst einen AJAX-Call auf das Repository machen um dir die Site-Mitgliedschaften des Users zu holen & auszuwerten
B) Du passt die SlinghotUserFactory an um die Infos direkt an das User-Objekt in Share zu hängen

VG, jan
blodnatt
Member II

Re: Startseite nach Login anpassen

Hi,
es gibt zwei Wege:
A) du musst einen AJAX-Call auf das Repository machen um dir die Site-Mitgliedschaften des Users zu holen & auszuwerten
B) Du passt die SlinghotUserFactory an um die Infos direkt an das User-Objekt in Share zu hängen

VG, jan

Hi jpfi,

erstmal danke für die schnelle Antwort.

und jetzt zu meinem Problem. Ich hab keinen Schimmer, wie ich beide Wege umsetzen könnte  Smiley Sad
Bin leider erst knapp eine Woche mit Alfresco zu Gange und kenn mich noch nicht sooo gut aus. Außerdem hab ich kein Schimmer von Ajax…. Bin nur nen kleiner Azubi der ins kalte Wasser geworfen wurde Smiley Very Happy Hab zwar schon relativ viel gelernt durchs ausprobieren, aber soweit reicht mein Latein doch noch nicht :?
blodnatt
Member II

Re: Startseite nach Login anpassen

Ich hab jetzt ne schöne Seite gefunden, die mir helfen könnte
und zwar ist es diese hier: http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/site/script/Site.html

die "isMember" Methode sollte doch eigentlich die richtige sein oder?
in der Doku steht folgendes zu der Methode:

public boolean isMember(java.lang.String authorityName)

    Indicates whether a user is a member of the site.

    Parameters:
        authorityName - user name
    Returns:
        boolean true if the user is a member of the site, false otherwise

Hatte das dann mal in die site-index.jsp eingepflegt, und zwar wie folgt:

String siteName = "xyz";
   if (siteName.isMember(URLEncoder.encode(userid)))
      response.sendRedirect(request.getContextPath() + "/page/site/xyz/dashboard");
   else
      response.sendRedirect(request.getContextPath() + "/page/user/" + URLEncoder.encode(userid) + "/dashboard");

wenn ich mich einlogge, kommt folgender Fehler
A problem has occurred.
This page could not be rendered:
site-index
Please notify your system administrator.

und in der .log Datei steht:

An error occurred at line: 35 in the jsp file: /site-index.jsp
The method isMember(String) is undefined for the type String
34:    String siteName = "gon";
35:    if (siteName.isMember(URLEncoder.encode(userid)))
36:       response.sendRedirect(request.getContextPath() + "/page/site/gon/dashboard");
37:    else
38:       response.sendRedirect(request.getContextPath() + "/page/user/" + URLEncoder.encode(userid) + "/dashboard");

heißt ja soviel, dass der Typ String die "isMember" Methode nicht besitzt, richtig?
Aber welchen Typ müsste ich denn dann benutzen?
jpfi_4454
Member II

Re: Startseite nach Login anpassen

Hi,
ganz so simpel ist es nicht. Du hast zwar ggf. schon die richtige JS-API-Methode gefunden, aber das ist eine API vom repository layer (/alfresco) und nicht vom web layer (/share).
D.h. du musst genau an dieser Stelle einen AJAX-request auf ein WebScript im Repo machen welches dir dann die Infos in JSON zurückliefert…
Es bleibt bei den beiden Varianten die ich dir am Anfang beschrieben habe…
VG, jan
blodnatt
Member II

Re: Startseite nach Login anpassen

Nabend,

ich habs immernoch nicht auf die Reihe gekriegt Smiley Sad

hatte eine mögliche lösung gefunden: http://wiki.alfresco.com/wiki/3.0_Web_Scripts_Testing (unten das beispiel)

hab das bisschen umgeändert in:

Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
   JSONObject result = new JSONObject(response.getContentAsString());
   // Check the result
   assertEquals(SiteModel.SITE_MANAGER, result.get("role"));
   assertEquals(USER_ONE, result.getJSONObject("person").get("userName"));

Fehlermeldung:
A problem has occurred.
This page could not be rendered:
site-index
Please notify your system administrator.

log Datei:
An error occurred at line: 27 in the jsp file: /site-index.jsp
Response cannot be resolved to a type

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));


An error occurred at line: 27 in the jsp file: /site-index.jsp
Duplicate local variable response

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));


An error occurred at line: 27 in the jsp file: /site-index.jsp
GetRequest cannot be resolved to a type

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));


An error occurred at line: 28 in the jsp file: /site-index.jsp
JSONObject cannot be resolved to a type

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));
31:    assertEquals(URLEncoder.encode(userid), result.getJSONObject("person").get("userName"));


An error occurred at line: 28 in the jsp file: /site-index.jsp
JSONObject cannot be resolved to a type

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));
31:    assertEquals(URLEncoder.encode(userid), result.getJSONObject("person").get("userName"));


An error occurred at line: 30 in the jsp file: /site-index.jsp
SiteModel.SITE_MANAGER cannot be resolved to a type

27:    Response response = sendRequest(new GetRequest("/api/sites/gon/memberships/" + URLEncoder.encode(userid)), 200);
28:    JSONObject result = new JSONObject(response.getContentAsString());
29:    // Check the result
30:    assertEquals(SiteModel.SITE_MANAGER, result.get("role"));
31:    assertEquals(URLEncoder.encode(userid), result.getJSONObject("person").get("userName"));

Stacktrace:
   at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
   at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
   at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
   at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
   at org.springframework.extensions.surf.render.bean.JSPProcessor.doInclude(JSPProcessor.java:237)
   at org.springframework.extensions.surf.render.bean.JSPProcessor.executeBody(JSPProcessor.java:154)
   … 38 more

wenn ich den link vom web script manuell in den browser einfüge, dann krieg ich die JSON Rückgabe….
weiß nicht, wieso ich immer den Fehler "xxx cannot be resolved by a type" kriege Smiley Sad
jpfi_4454
Member II

Re: Startseite nach Login anpassen

Hi,
da ganze funzt nicht weil der JSP-Compiler deine Response-Klasse nicht auflösen kann. D.h. hier fehlt noch min. der Import für deine Response Klasse (und IMHO noch viel mehr…)
VG, jan