CodeIgniter Polska Forum

Witamy na polskiej stronie wsparcia CodeIgniter. Nie zapomnij odwiedzić naszej strony głównej

Nie jesteś zalogowany na forum.

#1 28-01-2018 03:00:39

amdziak
Użytkownik
Data rejestracji: 28-01-2018
Liczba postów: 1

Logowanie - inne widoki w zależności od flagi

Cześć,

Tworzę swój pierwszy projekt w CI i potrzebuję mieć następującą funkcjonalność.
Mam 3 rodzaje użytkowników:
admin
user
agent
Chciałbym, żeby dla każdego typu usera ładował się inny widok - jak to najlepiej zrobić?
W funkcji dać if i w zależności do flagi ładować inny widok?

Widoki w zasadzie będą się różnić dostępnością do poszczególnych funkcji, więc wydaje mi się że najprościej (może nie najlepiej?) zrobić 3 różnie widoki różniące się w zasadzie tylko wyświetlanymi funkcjonalnościami.
Dodatkowo jak się zabezpieczyć przed tym, aby użytkownik typu user po wpisaniu w pasku adresu konkretnego url'a dostępnego tylko dla admina nie miał tam dostępu?

Pozdrawiam,
Paweł.

Offline

#2 30-01-2018 10:49:07

slav
Administrator
Data rejestracji: 06-09-2012
Liczba postów: 35
WWW

Odp: Logowanie - inne widoki w zależności od flagi

zapisuj gdzieś w sesji poziom danego użytkownika, a potem serwuj odpowiedni kontroller. Większość gotowych systemów do autoryzacji / autentykacji działa właśnie w ten sposób. Zobacz przykłady np. dla Ion Auth

Offline

#3 19-06-2018 14:37:05

Seriox
Użytkownik
Lokalizacja: Germoney
Data rejestracji: 19-06-2018
Liczba postów: 1
WWW

Odp: Logowanie - inne widoki w zależności od flagi

Zrob najlepiej sobie jakis routing n.p.


//Main.php
  private function routing($tpl = "neuigkeiten", $path = "home") {
        if (isset($this->session->userdata['isAdmin'])) {
            if ($this->session->userdata['isAdmin']) {
                $this->Anmeldung->setUser('admin');
            }
        }
        if (isset($this->session->userdata['islogin'])) {
            if ($this->session->userdata['islogin']) {
                $this->Anmeldung->loadTemplate($tpl, $path);
                return;
            } else {
                if (isset($this->session->userdata['rememberMe'])) {
                    if ($this->session->userdata['rememberMe']) {
                        $this->Anmeldung->loadTemplate($tpl, $path);
                        return;
                    }
                }
            }
        }
        $this->login_view();
    }


//Anmeldung.php
    public function loadTemplate($template, $path) {
        $this->top(); //metas, header, navigation top/ side
        $this->load->view("interface/" . $this->user . "/inhalt/" . $path . '/' . $template); //page content
        $this->bottom(); //footer and other shit
    }



//Main.php
    public function csgo_stats() {
        $this->Steam->CSGO(); //api
        $this->TreeView = 'statistiken'; //for view
        $this->TreeMenu = 'csgo_stats';//for view
        $this->routing('csgo_stats', 'statistiken', $this->TreeView, $this->TreeMenu);
    }

Offline

Stopka