[asp.net] Podstrony - osobne dla admina i użytkownika?

0

Cześć! Robię projekt na zaliczenie przedmiotu.

Będzie to dość prosty workflow, w którym jest podział na admina i userów
-admin moze wiecej - moze edytowac grupy, userow, tworzyc im zadania, itd.
-userzy beda mieli dostep tylko do swoich zadan (do zadan swojej grupy).
obie grupy maja tez wiele wspolnych czynnosci - np. dodać notatkę do zadania, zmienić jego status.

Jak jest poprawniej - czy skopiować podstrony (utworzyc katalogi admin i usersi) i zmodyfikowac odpowiednio dla userow, czy moze lepiej w kazdej z tych podstron dawać warunki typu if grupa_usera!=admin --> visible poszczegolnych elementow = false

plusy drugiego rozwiazania to modyfikowanie tylko jednego pliku w razie zmian, ale minusem będzie trochę bardziej pogmatwany kod

ktoś coś doradzi :)?

0

Chodzi o ASP.NET MVC?
Same widoki możesz przecież mieć we współdzielonym katalogu, a w logice nie używaj żadnej ifologii, po prostu części wspólne w bazowych klasach, a specyficzne w dziedziczących.-

0

Kwestia tego co masz tam do zrobienia jeżeli widok ma być mocno modyfikowany to warto to jakoś przemyśleć żeby nie ifować tysiąc razy, może jakieś PartialView czy coś w tym stylu, jeżeli to ma być np dodatkowy przycisk na stronie czy coś w tym stylu bo bez sensu kombinować robisz if sprawdzasz role i decydujesz czy tak czy nie. Jeżeli widok cały ma być dla jakiegoś usera wtedy po prostu dajesz w kontrolerze dla metody atrybut Authorize z odpowiednią rolą i niepowołany użytkownik nie będzie miał dostępu (zakładam że korzystasz z Identity. Nie jestem super specem bo tez jeszcze studiuje i się uczę ale jak pracuję już ponad rok w MVC to tak robimy i jest ok :).

0

chodzi mi o asp.net bez mvc
na mvc przyjdzie jeszcze czas (na nauke)

0

rzeczywiście stworzenie dwóch osobnych klas dla usera i superusera ma sens, ale co z widokiem (czyli z plikiem aspx) - tutaj musiałbym już używać wielokrotnie ifa, a takie rozwiązanie nie za bardzo mi się widzi...

czy nie ma jakiegoś parametru "grupy" kontrolki ? coś w stylu
<label... group=userzy
<label... group=admini

i potem tylko zrobić Visible dla kontrolek gdzie group=userzy w przypadku usera?

coś jak umieszczenie wielu kontrolek w panelu i potem sterowanie tylko widocznością panela...

0

Możesz na przykład wspólne dla różnych widoków kontrolki umieścić w UserControl, i wyświetlać to UserControl w obu plikach aspx.

0

ok dzięki za poymsły ;) somekind, twój pomysł jest fajny, ale to uczyniłoby mój plik jeszcze bardziej zagmatwanym :) niestety wiele kontrolek w konkretnym panelu się miesza (niektóre są dla admina niektóre nie, w innym miejscu jest panel tylko dla admina...)

stwierdziłem że postawię na prostotę, w rzeczywistości nie ma wiele do zmian - po prostu gdy formularz(panel) jest "mieszany" po kliknięciu buttona dam info "nie masz uprawnień" ;) a panele dla admina zwyczajnie poukrywam

ale dzięki za pomysły, bo teraz muszę szybko skończyć projekt na zaliczenie ;] ale jak go będę rozszerzał, bo będzie to moja praca licencjancka, to wtedy pewnie wykorzystam wasze pomysły, bo na razie ten projek ttraktuje jako naukę podstaw asp.net

0

Np. masz takie kontrolki:

  • Username.ascx - do zmiany nazwy
  • Password.ascx - do zmiany hasła
  • UserGroup.ascx - do ustawienia grupy użytkownika

I widok Admin.aspx ma wszystkie trzy, a widok User.aspx ma tylko dwie pierwsze.
W jaki sposób gmatwa to Twój kod?

1 użytkowników online, w tym zalogowanych: 0, gości: 1