Bartku,
> > Aplikacje jednak zrobili, więc "da się" :)
>
> Mowa m.in. o mnie.
> Żeby dostać niektóre ficzery, to strasznie trzeba hackować. Ja bym nie
> chciał strony confitury na Liferayu. Sry.
Trudno mi tutaj osądzać przyczyny związane z koniecznością hackowania,
ale warto w cichości ducha zrobić rachunek sumienia - czy na pewno
było to zrobione zgodnie z tym jak producent zaleca?
> Można też, tak jak radzi Sebastian - napisać formatkę w Vaadinie,
> który zawoła API/usługę :)
I teraz jeszcze się okaże, że "sczardżowali" klienta nadmiarowo :)
Dobrze, że Bartek rozpoczął ten wątek, bo pokazuje, że wiedza siedzi w
głowach u różnych ludzi, a jedynym problemem jest dobranie się w
odpowiednie zespoły. Widać, że WJUG spełnia swoją rolę. Brakuje mi
jeszcze w naszej branży zwyczaju zestawiania się w zespoły pod projekt
- ktoś kiedyś o tym wspominał, że przypominałoby to takie luźne
formacje jazzowe, które schodzą się na jeden, dwa występy, może płytę
i ciao. Temat na inny wątek.
Jacek
--
Jacek Laskowski
Java EE, functional languages and IBM WebSphere - http://blog.japila.pl
Warszawa JUG conference = Confitura (formerly Javarsovia) :: http://confitura.pl
"Hoping to save time by spending it" by David Blevins (Apache OpenEJB)
> --
> Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
> Więcej informacji na stronie
> http://groups.google.com/group/warszawa-jug?hl=pl
> Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na
> http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
>
--
Sent from my mobile device
> Klient zażyczył sobie własny form rejestracji. Mamy trochę custom fieldów.Jeśli chodzi o custom fieldy - można zrobić hook do mechanizmu to
> Zadanie wymagało sprawdzania siły hasła i prawidłowości screenname (nick)
> przez ajaxa, zanim zostanie niciśnięty przyciśk submit.
obsługującego (create_account.jsp itd.)
Oczywiście custom fields - za pomocą Expando (Custom Fields w Control
Panel). Nikt też nie broni dołożyć akcji AJAXowej, która sprawdzi
hasło.
Można też, tak jak radzi Sebastian - napisać formatkę w Vaadinie,
który zawoła API/usługę :)
Hasło - wołamy np. PwdToolkitUtil.validate(companyId, userId,
> Jak byś poprosił Liferaya o sprawdzenie czy hasło spełnia politykę
> wyklikaną w ustawieniach oraz czy pasuje mu screenname (można ustawić
> blacklistę)?
password1, password2, passwordPolicy);
Screen name - do walidacji jest API, tylko niestety niekompletne:
ScreenNameValidator screenNameValidator =
ScreenNameValidatorFactory.getInstance();
ale w UserLocalServiceImpl.validateScreenName jest dodatkowa logika
walidacyjna (min. wspomniana black lista) a ta metoda i
wołające ją walidujące chyba wszystkie są protected, więc nie ma
publicznego dostępu do metod walidujących (przyczyn może być kilka).
Więc tutaj faktycznie nie jest już w 100% gładko - ale też bez paniki.
Jedno podejście, które w tej chwili przychodzi mi do głowy, to (jest
to dość nieźle opisane w Liferay in Action) wystawienie swojego
Service,
który rozszerzy pod spodem UserLocalServiceImpl (ale sam nie będzie
implementacją UserService, bo nie jest to konieczne) i
upubliczni metodę validującą użytkownika albo samo screen name i
hasło.
Nie jest to idealne rozwiązanie (korzystamy jednak pod spodem z metody
protected), ale ta nie-idealność jest wtedy odseparowana od reszty
aplikacji
oraz samego portalu.
t
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
> To niedobrze, bo dobre pytanie jest czasami nawet ciekawsze od
> odpowiedzi. I nie ma czego się wstydzić - tu raczej przy udzielaniu
> odpowiedzi trzeba pilnować żeby się nie zbłaźnić.
Ciekawe. Ogólne postrzeganie (i pewnie moje takie było) jest takie, że
to pytający jest na straconej pozycji, ale właśnie otworzyłeś mi oczy!
Obaj mają takie same szanse i tutaj znajduję odpowiedź, dlaczego tak
wiele osób po prostu przysłuchuje się dyskusjom (nasłuchuje) - tutaj
nie mamy możliwości się zbłaźnić, a jakimś cudem boimy się tego
panicznie. Bez pytań nie ma rozwoju, a z nimi możemy się zbłaźnić.
Pytam zatem: "No i co z tego?!"
Dzięki Tomku za pouczające zdanko! Weekend zapowiada się radośnie :)
Eeee, nie idźmy w tym kierunku. Coś mi mówi, że wypowiedź bez autora
ma jakąś mniejszą wartość dla mnie.
Mam wrażenie, że kiedy człowiek błaźni się, jest w tym błogim stanie,
w którym idzie się od kogoś czegoś nauczyć. W końcu do zbłaźnienia
potrzebna jest strona, która sprawia, że jest to w ogóle możliwe, a
skoro ona wie więcej, jest szansa, że i my będziemy. Ceną jest
potencjalne zbłaźnienie się, ale sądzę, że warto ją zapłacić. Zresztą,
nie powinno ubywać nam od tego poziomu naszego wewnętrznego ego.
t
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
> --
> Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
> Więcej informacji na stronie
> http://groups.google.com/group/warszawa-jug?hl=pl
> Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na
> http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
>
--
Sent from my mobile device
Pozdrawiam,
t
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
2012/2/20 Piotr Pietrzak <pi...@macintosh.pl>http://www.liferay.com/community/wiki/-/wiki/Main/Portal+Hook+Plugins#section-Portal+Hook+Plugins-Overriding+Services
On 20 Lut, 10:31, Tomek Lipski <tomek.lip...@gmail.com> wrote:
> On Feb 20, 10:06 am, Bartek Zdanowski <bartek.zdanow...@gmail.com>
> wrote:
>
> > > Ale jak widać - jak nawet musimy zrobić coś, co nie przyszło autorom
> > > Liferaya do głowy, to i tak Liferay pozwala nam mieć to pod względną
> > > kontrolą.
>
> > Poczytałem o hookach, ale napisane jest tam, że kod zostanie załadowany
> > przez class loadera mojego WARa.
> > Da się coś wstrzyknąć do class loadera Liferaya?
>
> Do tego służy właśnie mechanizm Ext z tego co się orientuję.
"Starting with Liferay 6.0 and 5.2 EE SP4, you can override services
using hooks as opposed to doing so in the EXT."
W doc
http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/overriding-a-portal-service
jest napisane ze hook jest ladowany przez classloadera mojego WAR. Dobrze rozumiem?
--
Pozdrawiam,
Bartek Zdanowski
Bloguję http://blog.bartekzdanowski.pl i twittuję http://twitter.com/bartekzdanowski
Confitura 2012 - największa bezpłatna konferencja programistyczna - http://confitura.pl
KO Warsjawa 2012 - warszawskie jesienne warsztaty javowe - http://warsjawa.pl
> --
> Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
> Więcej informacji na stronie
> http://groups.google.com/group/warszawa-jug?hl=pl
> Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na
> http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
>
--
Sent from my mobile device
Pozdrawiam,
> Jak masz kolek zamiast miotly i masz latac na tym, to tylko hackowanie
> pozostaje.
A może warto poszukać miotły, albo nawet zarzucić temat latania? Jak
to szło: "Jak się ma młotek, to...kurcze, nie pamiętam :(
Jacek
--
Jacek Laskowski
Java EE, functional languages and IBM WebSphere - http://blog.japila.pl
"Never discourage anyone who continually makes progress, no matter how
slow." Plato
Bartku,
jedno to kwestia miotły/odkurzacza/kołka a druga to kwestia zapędzenia
się w złym kierunku. Moim zdaniem jesteś w stanie w 100% ukończyć
swoją pracę pisząc banalny portlet (znowu namawiam na Vaadina bo
szybko się w tym klepie UI), który wykona opisane zadanie biznesowe
tylko w oparciu o *LocalServiceUtil-e. Oczywiście możemy w tym celu
napisać własny serwis za pomocą ServiceBuildera ale to jest strasznie
przekombinowane rozwiązanie w momencie gdy Liferay dostarcza wszelkie
niezbędne klocki (jeżeli któregoś według Ciebie nie ma, to proszę
powiedz którego - może faktycznie się mylę).
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
No ale form rejestracji z wlasnymi polami i sprawdzanie sily hasla i
dostepnosci nicka przez ajax jest jak najbardziej biznesowo
uzasadniona funkcjonalnoscia, prawda?
Jak masz kolek zamiast miotly i masz latac na tym, to tylko hackowanie
pozostaje. A gdybym napisal "gimnastyka" zamiast hack, to byloby co
innego?
> Oczywiście moje spojrzenie jest bardzo subiektywne. Może zakres i cel
> projektu jest inny, niż sobie to wyobrażam, więc moje uwagi są bezzasadne.
Cześć Piotr,
Nie byłem specjalnie zainteresowany tematem, ale czytałem go na
bieżąco i przyznam szczerze, że aż dziwię się teraz sobie, że sam nie
wpadłem na ten genialny pomysł z wyniesieniem zarządzaniem
użytkownikami poza portal. Tak właśnie było w moich projektach, ale
zwykle pomysłodawcą był ktoś mądrzejszy (może Ty?!)
Wspaniale obsłużyłeś problem. Nie wiem, czy to będzie rozwiązanie
satysfakcjonujące Bartka (inicjatora dyskusji), ale dla mnie jest
wprost wymarzone. Bardzo dziekuję za chęć podzielenia się swoją
opinią, która nota bene zawsze będzie subiektywne, bo jakie inne
mogłoby być, skoro Twoje?! :)
Cudo wątek!
Mam wrażenie, że organizacja którą ma na myśli Bartek, nazywa się
"Internet" :). Tam z SSO jest trochę krucho [1].
[1] oczywiście istnieją oauth/openid, szkoda tylko, że nie w świadomości
userów
--
Jakub Nabrdalik
blog.solidcraft.eu
Wiadomość napisana przez Bartek Zdanowski w dniu 21 lut 2012, o godz. 07:41:Nieprawda:)No ale form rejestracji z wlasnymi polami i sprawdzanie sily hasla i
dostepnosci nicka przez ajax jest jak najbardziej biznesowo
uzasadniona funkcjonalnoscia, prawda?Trochę mnie dziwi, że ktoś próbuje zarządzać użytkownikami w portalu, bo narzędzia tam występujące są mocno prymitywne. Sam portal posiada integrację z AD, LDAP + CAS ... Moim zdaniem jest to zachęta do tego, aby faktycznie użytkowników trzymać w prawdziwym systemie IDM a z liferayem się tylko integrować. W przypadku takiego rozwiązania masz dużo prostszą architekturę a do tego za chwilę i tak będziesz potrzebował SSO i tak, bo w dużej organizacji portal nie istnieje w próżni. W naszym wdrożeniu tożsamością zarządzamy tak jak robiliśmy to zawsze a portal podpięliśmy do naszej bazy użytkowników. Autoryzacja działa po CAS (takie SSO, które łatwo się zapina i jest nam potrzebne do innych aplikacji).Zarządzanie użytkownikami na własną rękę i to jeszcze przy użyciu standardowego formularza wbudowanego w portal brzmi jak źle zrobiona analiza. Dobrze zrobione zarządzanie tożsamością to podstawa udanego wdrożenia portalu - bez tego problemy będą się nawarstwiać i czeka Cię migracja na prawdziwe rozwiązania IDM (czyli przenoszenie użytkowników z bazy liferay do powiedzmy AD, czy LDAP, oraz zapięcie SSO i zbudowanie własnych mechanizmów zarządzania uprawnieniami). Po co spiętrzać górkę do przeniesienia? Może lepiej od razu zapiąć się do istniejącego LDAP, AD, czy czegośtam i nie marnować czasu/kasy klienta? A formularz do tworzenia użytkowników czy będzie w ajax z grails, vaadin, gwt, czy php + delphi to wszystko jedno.Dla mnie zarządzanie użytkownikami to najbardziej złożona część wdrożenia portalu z natury rzeczy. Samo uruchomienie, konfiguracja, optymalizacje i inne problemy techniczne w porównaniu z rozwiązaniem problemów fundamentalnych dużej organizacji (takich jak zarządzanie użytkownikami/uprawnieniami) to pestka. Złożoność widać również po cenach produktów - często portal jest tańszy od systemu IDM (tak wiem - to śmieszny argument).Oczywiście moje spojrzenie jest bardzo subiektywne. Może zakres i cel projektu jest inny, niż sobie to wyobrażam, więc moje uwagi są bezzasadne.
A czy taki wjug jest dobrym miejscem na takie rozmowy ? Ja osobiście
podchodzę do tej listy jako do miejsca o informacjach warszawsko
społecznościowych a pomocy szukałbym na czymś o większym zasięgu. Bo
przecież samych polskich jugów jest klika.
W sumie smutne że polska grupa usenetowa jest w zasadzie martwa.
Chyba że na zasadzie mniejsza grupa lepiej się zna więc jest większa
motywacja żeby pomóc koledze z okolicy niż anomiomowemu pseudo "skądś tam".
--
Tomek
Bartku,
Piotr Pietrzak poniżej ma rację - używanie Liferaya do tego celu to
półśrodek, ale jeżeli chcesz sprawdzić jakie są ustawione reguły polis
dla uwierzytelnianiania to robisz to za pomocą serwisu
PasswordPolicyLocalServiceUtil.getDefaultPasswordPolicy(companyId) -
to jest o ile mnie pamięć nie myli bo dawno tego nie oglądałem :-). Co
do sprawdzenia czy User istnieje z zadanym screennamem to pomaga
warunek (UserLocalServiceUtil.getUserByScreenName(userId,
"mój_zajefajny_screen_name")!=null).
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
--
Tomek
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
Samej blacklisty chyba nie da się wyssać - ale createUser w
UserLocalServiceUtil powinien plunąć wyjątkiem gdy próbujesz utworzyć
usera z usernamem blacklistowym (rozumiem, że chodzi o reserved screen
names?).
Co do haseł to zerknij jeszcze na
PasswordTrackerLocalServiceUtil.isValidPassword a odnośnie tej
nieszczęsnej blacklisty .. chwile szperania i chyba znalazłem:
String adminReservedScreenNames = ParamUtil.getString(request,
"settings--" + PropsKeys.ADMIN_RESERVED_SCREEN_NAMES + "--",
PrefsPropsUtil.getString(company.getCompanyId(),
PropsKeys.ADMIN_RESERVED_SCREEN_NAMES));
String adminReservedEmailAddresses = ParamUtil.getString(request,
"settings--" + PropsKeys.ADMIN_RESERVED_EMAIL_ADDRESSES + "--",
PrefsPropsUtil.getString(company.getCompanyId(),
PropsKeys.ADMIN_RESERVED_EMAIL_ADDRESSES));
ew. tak:
String[] reservedScreenNames = PrefsPropsUtil.getStringArray(
companyId, PropsKeys.ADMIN_RESERVED_SCREEN_NAMES,
StringPool.NEW_LINE, PropsValues.ADMIN_RESERVED_SCREEN_NAMES);
String[] reservedEmailAddresses = PrefsPropsUtil.getStringArray(
companyId, PropsKeys.ADMIN_RESERVED_EMAIL_ADDRESSES,
StringPool.NEW_LINE, PropsValues.ADMIN_RESERVED_EMAIL_ADDRESSES);
Wydaje mi się, że to kończy temat hakierowania Liferaya :-). Mam
nadzieję, że bez większych trudności uda Ci się wprowadzić wymagane ze
strony klienta customizacje :-). Jak będziesz miał jeszcze jakieś
problemy to postuj.
Tak. I nie można sie do tego dobrać z własnego kodu.
>
> Chociaż hasło to ja bym generował i wysyłał ludziowi na emaila -
> łatwiej, prościej i szybciej. Ale wiadomo - wymaganie biznesowe święte
> jest ;-)
Tak. święte
> --
> Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
> Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
> Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
--
Pozdrawiam,
Bartek Zdanowski
Bloguję http://blog.bartekzdanowski.pl i twittuję
>
> t
Chociaż też oczywiście wolałbym, żeby po prostu Liferay wystawił api
do walidacji, wtedy by wszyscy byli szczęśliwi. Z innymi metodami jest
tak, jak pisze Sebastian.
t
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie