Пишу сайт на php ООП, используя паттерн MVC. Сайт работает, все отображается. Как мне теперь создать панель администратора? Я сделал так: создал в корне сайта папку admin и там файл .htaccess и .htpasswd. Т.е. как только кто-нибудь перейдет в папку admin, то появится окошко авторизации. И в этой папке admin создал отдельные контроллеры для администратора, но часть кода совпадает с кодом контроллеров для пользователя. как быть? правильно ли это?
Делайте полноценную программную авторизацию на куках. Разделять фронт и админку сайта более чем нормально. Часть либ может быть общей. Вынесите их в отдельную ветку. --- Добавлено --- Выдавать форму входа в админку по адресу /admin и т.п. – это хрень. Попробуйте сделать так, чтобы даже форму входа было трудно найти.
это как? чтобы форму трудно было найти? какую-ниюудб страницу для этого создать и ссылку буду знать только я? Допустим у меня есть авторизация и я авторизован под админом. И возникает вопрос: как разрешить одни методы пользователям, а некоторые запретить? Т.е., чтобы некоторые методы (удаление, добавление) были доступны только авторизованному админу
Да. Как вариант, форму входа можно выносить вплоть до локалки и использовать единственный корректный адрес точки входа (обработчика формы входа), который бы был немного сложнее, чем /admin и т.п.
Допустим я авторизован. Что дальше? Я допустим нажимаю на заметку и надо чтобы он открылся в редакторе. Как это сделать? Здесь же уже отображение другое надо подставить? Как и где это делается? как проверить что пользак авторизован?
Речь была о полном отделении админки. Там основной вьюшкой будет форма редактирования. Авторизацию можно делать прямо во фронте админки. Мы обычно выносим админку на www-поддомен для обеспечения скрытности, упрощения адресации и соблюдения принципа «одной точки входа на хост».
Угу. Физически можете разместить в одном месте и вызывать ту или иную точку входа в зависимости от имени хоста в запросе (программно, при помощи директив .htaccess и т.п.). --- Добавлено --- Но лучше, конечно, и физически разнести. --- Добавлено --- Это в принципе может настраиваться.