Разработка системы доступа к ресурсам образовательного веб-портала вуза

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,31 Мб
  • Опубликовано:
    2012-06-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка системы доступа к ресурсам образовательного веб-портала вуза

Дипломная работа

на тему «Разработка системы доступа к ресурсам образовательного веб-портала вуза»

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ

.1 Актуальность темы дипломной работы

.2 Информатизация вуза

.2.1 Процесс информатизации

.2.2 Стратегия информатизации СПбГУТ

.2.3 Веб-портал. Создание образовательного веб-портала вуза

.3 Обзор коммерческих ERP-систем

.3.1 ERP-системы

.3.2 Коммерческие ERP-системы для вузов

.3.3 Преимущества и недостатки коммерческих ERP-систем

.3.4 Ценовые характеристики наиболее распространенных коммерческих ERP-систем

.4 Обоснование разработки веб-портала силами вуза

. ПОСТАНОВКА ЗАДАЧИ И ВЫБОР СРЕДСТВ РАЗРАБОТКИ

.1 Постановка задачи

.2 Требования для клиентской части ПО

.3 Выбор средств разработки для серверной части ПО

.3.1 Веб-сервер Apache

.3.2 Интерпретатор языка PHP

.3.3 Сервер управления базами данных MySQL

.3.4 Библиотека классов Zend Framework

.3.5 Общая характеристика выбранных средств разработки

. РАЗРАБОТКА АЛГОРИТМОВ СИСТЕМЫ ДОСТУПА

.1 Классификация информационных ресурсов

.2 Концепция создания системы доступа для веб-портала вуза

.3 Система доступа. Алгоритм доступа к информационным ресурсам

. РАЗРАБОТКА ПРОГРАММНОГО КОДА, РЕАЛИЗУЮЩЕГО МАТРИЦУ ВЗАИМОДЕЙСТВИЯ ГРУПП ПОЛЬЗОВАТЕЛЕЙ И ИНФОРМАЦИОННЫХ РЕСУРСОВ

.1 Группы пользователей

.2 Регистрация новых пользователей

.3 Выбор вида авторизации и его реализация

.3.1 Авторизация средствами web-сервера

.3.2 Авторизация с помощью заголовка

.3.3 Авторизация с помощью cookies

.3.4 Авторизация с помощью сессий

.3.5 Реализация алгоритма авторизации-

.4 Применение механизма аутентификации

.5 Реализация распределения прав доступа пользователей к информационным ресурсам веб-портала

.6 Функции «Личного кабинета»

. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ ИНФОРМАЦИОННЫХ РЕСУРСОВ

.1 Методы защиты информации

.2 Программные меры защиты информации, реализованные в разработанной системе доступа

.3 Алгоритм шифрования паролей SHA1

.4 Применение CAPTCHA

ЗАКЛЮЧЕНИЕ

ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

Коренные изменения в сфере образования ведущих европейских стран, в частности, осуществление широкомасштабных программ информатизации образования, а также необходимость повышения качества деятельности СПбГУТ в рамках всех его процессов обуславливают необходимость создания Единой образовательной инфокоммуникационной среды (ЕОИС) и обеспечения доступа к ней сотрудников и студентов вуза.

Решением этой задачи является создание образовательного портала СПбГУТ, который должен стать системой авторизированного доступа к информационным ресурсам единой образовательной нфокоммуникационной среды вуза.

С появлением веб-портала возникает проблема обеспечения безопасности информационных ресурсов веб-портала и предоставления доступа к этим ресурсам пользователям, имеющим соответствующую степень доступа к ресурсу. Учитывая то, что веб-портал является информационной системой, предоставляющей доступ для множества пользователей, возникает необходимость предоставления каждому пользователю уникального набора прав доступа к информационным ресурсам веб-портала.

В данной работе была поставлена цель- разработка системы доступа к ресурсам образовательного веб-портала СПбГУТ, которая включает в себя реализацию следующих задач:

-       анализ материалов предметной области;

-       выбор инструментов для разработки;

-       разработка алгоритмов работы системы доступа;

-       реализацию возможности регистрации новых пользователей;

-       создание БД для хранения информации о пользователях системы;

-       применение механизма аутентификации, управления сессиями и реализацию авторизации пользователей системы;

-       создание групп пользователей и механизма определения пользователей в группы;

-       разработку и программную реализацию механизмов распределения прав доступа к информационным ресурсам веб-портала;

-       создание функций для пользователей системы и предоставление доступа к этим функциям только для определенных групп пользователей;

-       применение методов для обеспечения безопасности информационных ресурсов.

Общая структура дипломной работы, обусловленная указанными задачами, состоит из 5 глав.

глава представляет собой обзор предметной области, в ней рассматривается процесс и стратегия информатизации СПбГУТ, необходимость создания веб-портала в рамках решения задач по информатизации и актуальность создания системы доступа к ресурсам веб-портала.

Во 2 главе формулируется постановка задачи, требования, предъявляемые для клиентской части ПО и обоснование выбора средств разработки серверной части ПО.

В 3 главе описывается разработка алгоритмов системы доступа и всех ее элементов на основании сформулированной концепции системы доступа к ресурсам и определяется понятие информационных ресурсов.

глава представляет собой практическую реализацию программного кода, реализующего матрицу взаимодействия групп пользователей и информационных ресурсов. В этой главе создаются группы пользователей, реализуется возможность регистрации новых пользователей и процедура авторизации, использующая механизмы аутентификации и управления сессиями, также выполненные в программном коде, создается программный механизм распределения прав доступа пользователей к информационным ресурсам веб-портала и задаются функции «Личного кабинета пользователя».

В 5 главе приводится описание мер предпринятых для обеспечения безопасности информационных ресурсов образовательного веб-портала, в частности программных мер защиты информации, реализованных в разработанной системе доступа, рассматривается алгоритм шифрования паролей SHA1 и реализация кодов подтверждения.

1.1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ

.1 Актуальность темы дипломной работы

Веб-портал представляет собой систему, предоставляющую доступ для множества пользователей и обладающую определенным набором информационных ресурсов.

Предполагается, что некоторые данные, составляющие информационный ресурс, например личные дела сотрудников и студентов вуза, финансовая документация, оценки, должны быть доступны не всем посетителям портала, а только определенной группе лиц или даже конкретному человеку. Таким образом, возникает необходимость предоставления каждому пользователю своего уникального набора прав доступа к информационным ресурсам, для реализации которого необходимо разработать систему прав доступа к информационным ресурсам веб-портала, представляющую собой совокупность механизмов распределения прав доступа к ресурсам и дополнительных элементов для их реализации и функционирования, и применения методов обеспечения безопасности информационных ресурсов.

.2 Информатизация вуза

.2.1 Процесс информатизации

Стремительное развитие информационных и коммуникационных технологий является одним из факторов, определяющих вектор развития мирового сообщества 21 века. Цивилизация неуклонно движется к построению информационного общества, где решающую роль играет именно информация.

век знаменует процесс информатизации всех сфер современного общества.

Информатизация- это организационный социально-экономический и научно-технический процесс создания оптимальных условий для удовлетворения информационных потребностей на основе формирования и использования информационных ресурсов.

Жизнедеятельность человека пронизана информационными потоками, поэтому без ИТ невозможно нормальное функционирование общества во многих областях его жизни.

Информация все больше становится мерилом всех сфер человеческого общества, в том числе и национальной культуры той или иной страны. Это приводит, с одной стороны, к огромной потребности в знаниях для общества в целом, с другой стороны - к развитию и созданию средств для удовлетворения личностных потребностей отдельного человека.

Существует мнение, что мир пережил несколько информационных революций. Первая информационная революция связана с изобретением и освоением человеческого языка, который, точнее устная речь, выделила человека из мира животных. Это позволило человеку хранить, передавать, совершенствовать, увеличивать приобретенную информацию.

Вторая информационная революция заключалась в изобретении письменности. Зафиксированное в письменных текстах знание было ограниченное, и, следовательно, мало доступно. Так было до изобретения книгопечатания. Что в свою очередь обосновало третью информационную революцию. Здесь наиболее очевидна связь информации и технологии. Механизмом этой революции был печатный станок, который удешевил книгу и сделал информацию более доступной. Четвертая революция, плавно переходящая в пятую, связана с созданием современных информационных технологий (телеграф, телефон, радио, телевидение). Но самым поразительным было создание современных компьютеров и средств телекоммуникаций.

Рождение новых технологий всегда носило революционный характер, но, с другой стороны, технологические революции не уничтожали классических традиций. Каждая предшествующая технология создавала определенную материальную и культурную базу, необходимую для появления последующей.

Сегодня стало очевидным преобладание информационной составляющей деятельности людей над всеми другими ее формами и компонентами. Поэтому слово "информация" приобрело поистине магическое значение, а современные информационные технологии являются подлинной движущей силой мирового экономического и технологического развития, преумножая сегодняшние знания и духовные ценности, расширяя сферы использования достижений науки и техники XX века.

Наблюдается рост значимости новых информационных технологий.

Информационная технология - это совокупность методов, производственных процессов и программно-технических средств, объединенных в технологическую цепочку, обеспечивающую сбор, обработку, хранение, распространение и отображение информации с целью снижения трудоемкости процессов использования информационного ресурса, а также повышения их надежности и оперативности.

В связи с применением новой информационной технологии, основанной на использовании средств связи, компьютеров, широко используется понятие “информационная система”.

Информационная система - организационно упорядоченная совокупность документов (массивов документов) и информационных технологий, в том числе с использованием средств вычислительной техники и связи, реализующих информационные процессы.

Развитие информационных технологий стало символом научно-технического прогресса и значительно расширило горизонты интеллектуальных возможностей человека. За короткое время своего существования электронно-вычислительная техника сильно преобразилась: стала высокоэффективной, компактной, простой в обращении, относительно дешевой.

Учитывая тот факт, что на данном этапе развития общества информатизация охватывает почти все сферы жизни человека, и без информационных технологий невозможно нормальное функционирование общества во многих областях его жизни, необходимо обеспечить максимально возможный уровень внедрения ИТ в те сферы жизни, где это является необходимым.

1.2.2 Стратегия информатизации СПбГУТ

Процесс информатизации охватил и сферу образования.

Информатизация системы образования, связанная с развитием единого образовательного пространства, предполагает создание и эффективное использование образовательных информационных ресурсов, под которыми понимается совокупность образовательных материалов и средств доступа к ним, снабженная методикой по их использованию в учебном процессе. В этот комплекс могут входить рабочие программы, перечни вопросов, тем, глоссарии, конспекты лекций, вопросы для самопроверки и проверки, образцы решений, творческих работ учащихся, методические материалы, рекомендации, инструкции и т.д.

Информационно-образовательная среда - это системно организованная совокупность образовательных учреждений и органов управления, банков данных, локальных и глобальных информационных сетей, книжных фондов библиотек, система их предметно-тематической, функциональной и территориальной адресации и нормативных документов, а также совокупность средств передачи данных, информационных ресурсов, протоколов взаимодействия, аппаратно-программного и организационно-методического обеспечения, реализующих образовательную деятельность.

Информатизация является одним из приоритетных направлений деятельности СПбГУТ, ориентированным на формирование информационной культуры сотрудников и студентов, увеличение эффективности деятельности вуза.

Внедрение НИКТ способствует повышению качества деятельности СПбГУТ в рамках всех его процессов, позволяет подготовить грамотных специалистов, владеющих современными информационными технологиями, что в современных условиях особенно актуально.

В рамках проекта информатизации была проведена реконструкция учебного корпуса и внедрены новейшие технологии:

-       мультимедийные лекционные аудитории позволяют читать лекции в электронной форме, они оборудованы мультимедиа проекторами, интерактивными досками;

-       вся территория университета покрыта зоной действия WiFi;

-       трансляция материала на большие экраны в лекционной аудитории с возможностью дублирования на персональный компьютер студента через WiFi , что повышает качество восприятия учебного материала;

-       компьютерные классы снабжены современным оборудованием;

-       каждый студент получил личный ноутбук фирмы Apple;

-       WiFi позволяет делать рассылку новостей, учебных материалов и менять расписание в онлайн режиме, а студенту получать эту информацию сразу, как только он войдет в Интернет";

-       внедряется Единая система программного обеспечения.

На сегодняшний день завершены работы по установке и запуску оборудования в здании учебного лабораторного комплекса №4. Данный комплекс позволяет одновременно вести занятия в 18 поточных и 60 групповых аудиториях (лабораториях), снабженных необходимым комплектом мультимедийного оборудования. Подготовлены к работе 2 конференц-зала с синхронным переводом и режимами видеозаписи, видеотрансляции (видеоконференции). В полном объеме подготовлен к работе центр обработки данных, установлено программное обеспечение. В здании обеспечено полное покрытие Wi-Fi, студентам и преподавателям выдано 4800 ноутбуков с возможностью работы в сети, вследствие чего все здание превращено в единый учебно-лабораторный комплекс.

На сегодняшний день СПбГУТ располагает существенными материально-техническими ресурсами.

Стратегия проведения информатизации СПбГУТ на современном этапе сводится к созданию Единой образовательной инфокоммуникационной среды (ЕОИС) университета, что обусловлено коренными изменениями в сфере образования ведущих европейских стран, в частности осуществление широкомасштабных программ информатизации образования.

Основными задачами создания ЕОИС ГУТ являются:

-             переход на новый уровень образования и повышение качества подготовки специалистов;

-             обеспечение более высокого уровня конкурентоспособности Университета в условиях рыночной экономики;

-             создание единой информационной среды с обеспечением доступа к ней преподавателей и студентов ГУТ на основе использования новейших информационных и телекоммуникационных технологий.

Главная задача ЕОИС заключается именно в создании единой информационной среды с обеспечением доступа к ней преподавателей и студентов ГУТ на основе использования новейших информационных и телекоммуникационных технологий.

Решением этой задачи является создание образовательного портала СПбГУТ, который должен стать системой авторизированного доступа к информационным ресурсам единой образовательной инфокоммуникационной среды (ЕОИС) вуза.

.2.3 Веб-портал. Создание образовательного веб-портала вуза

Веб-портал (portal от лат. <#"552427.files/image001.gif">











Рис. 2. Примерная стоимость ERP-систем из расчета на 7000 рабочих мест

Oracle, SAP представляют собой программные платформы, на базе которых реализованы такие ERP-системы как «Naumen University» (фирма-производитель «Naumen») и «Университет» (фирма-производитель «RedLab») соответственно.

1.4 Обоснование разработки веб-портала силами вуза

Учитывая специфику СПбГУТ в рамках решения задач по информатизации оптимальным вариантом будет создание собственной системы для автоматизации учебного процесса, потому что:

-       СПбГУТ профилирующий вуз, выпускающий программистов;

-       для студентов вуза появится возможность реализовать свои теоретические познания в области информационных систем и технологий на практике;

-       есть возможность разработки с учетом специфики нашего вуза;

-       для сотрудников и студентов вуза специфика большинства процессов, на которых базируется деятельность вуза, требующих автоматизации хорошо известна, поэтому разработка будет ориентирована на автоматизацию данных процессов с учетом особенностей и потребностей нашего вуза;

-       отличие коммерческих систем в данном случае заключается в том, что в таковых реализован только стандартный набор функциональных возможностей;

-       существует возможность получения предельно полной документации и комментариев к программному коду, что дает возможность модифицировать, развивать, наращивать и усложнять систему в зависимости от изменяющихся потребностей ее пользователей и как следствие - преемственность разработок;

-       в данном случае отсутствует зависимость от разработчиков системы;

-       приемлемая общая стоимость разрабатываемой системы.

2. ПОСТАНОВКА ЗАДАЧИ И ВЫБОР СРЕДСТВ РАЗРАБОТКИ

.1 Постановка задачи

Предварительный анализ, проведенный на этапе разработки концепции системы доступа к ресурсам веб-портала, выявил следующие требования к разрабатываемой системе доступа:

-       необходимо организовать доступ каждому из пользователей к своему индивидуальному набору ресурсов;

-       процесс делегирования прав доступа должен быть максимально автоматизирован;

-       реализовать объединение пользователей в группы;

-       пользователи должны автоматически распределяться по группам;

-       количество групп соответствует числу должностей сотрудников вуза.

Выполнение этих требований должно осуществляться с учетом следующих количественных характеристик:

-       количество пользователей системы: около 7000;

-       количество ресурсов: более 10 000.

(по предварительным оценкам)

.2 Требования для клиентской части ПО

Все ПО должно состоять из двух частей: клиентской и серверной.

Клиентская часть представляет собой ПО работающее на компьютере пользователя и обеспечивающее взаимодействие разрабатываемой ИС с пользователем.

Серверная часть- это ПО, работающее на стороне сервера.

В качестве клиентской части будет выступать обычный интернет-браузер (веб-браузер).

Веб-браузер - комплексное приложение для обработки и вывода разных составляющих веб-страницы и для предоставления интерфейса между веб-сайтом и его посетителем.

Практически все популярные браузеры распространяются бесплатно или «в комплекте» с другими приложениями:

-       Internet Explorer (совместно с Microsoft Windows);

-       Mozilla Firefox (бесплатно, свободное ПО);

-       Safari (совместно с Mac OS или бесплатно для Windows);

-       Opera (бесплатно, начиная с версии 8.50);

-       Google Chrome (бесплатно, свободное ПО);

-       Avant (бесплатно, свободное ПО).

Единственное требование к стороне клиента - наличие подключения к внутренней сети вуза (для доступа с рабочего места) или интернет-соединения (для удаленной работы).

Ввиду того что в СПбГУТ сотрудникам и студентам выданы ноутбуки фирмы Apple система адаптирована к браузеру MacOS X - Safari.

Учитывая тот факт, что многие пользователи могут использовать браузеры различных производителей, система адаптирована для большинства браузеров- является кросс-браузерной.

Кросс-браузерность - свойство сайта отображаться и работать во всех популярных браузерах идентично. Под идентичностью понимается отсутствие развалов верстки и способность отображать материал с одинаковой степенью читабельности.

Обобщив все вышесказанное, сформулируем кратко требования

для клиентской части ПО:

)        Любой веб-браузер

)        Доступ к внутренней сети вуза или Интернет соединение

2.3 Выбор средств разработки для серверной части ПО

.3.1 Веб-сервер Apache

С браузерами имеют дело Web-пользователи, которые подходят к их выбору и анализу с надлежащей тщательностью.

Серверы видны только техническому персоналу сайтов. Хотя существует множество различных Web-серверов, около 80% всех сайтов, согласно недавним исследованиям Netcraft, работают всего на двух из них - Apache и Internet Information Server (IIS). Оба эти сервера - тщательно проработанные продукты. Статистику использования серверов по состоянию на 2010 год можно увидеть на рис. 3.

Рис. 3. Доля рынка для топовых серверов по всем доменам на 2010 год

Теперь рассмотрим тенденции развития топовых (наиболее популярных) на мировом рынке веб-серверов и прирост в количественной и процентной оценке (информация представлена в табл. 1.)

Табл. 1. Тенденция развития топовых веб-серверов

 Сервер

Январь 2010

Доля рынка

Февраль 2010

Доля рынка

Изменение

Apache

111,307,941

53.84%

112,903,926

54.46%

0.62

Microsoft

49,792,844

24.08%

50,928,226

24.57%

0.48

Google

14,550,011

7.04%

14,315,464

6.91%

-0.13

nginx

15,568,224

7.53%

13,978,719

6.74%

-0.79

lighttpd

955,146

0.46%

1,097,685

0.53%

0.07


-       Apache - свободный веб-сервер, наиболее часто используемый в Unix-подобных операционных системах;

-       IIS от компании Microsoft, распространяемый с ОС семейства Windows NT.

-       nginx - свободный веб-сервер, разработанный Игорем Сысоевым в 2002 году и пользующийся большой популярностью на крупных сайтах lighttpd - свободный веб-сервер;

-       lighttpd - веб-сервер, разрабатываемый с расчётом на быстроту и защищённость, а также соответствие стандартам. Это свободное программное обеспечение, распространяемое по лицензии BSD.

-       Google Web Server - веб-сервер, разработанный компанией Google;

В табл. 2. представлена общая информация о различных веб-серверах и , что очень важно для решающего выбора, о типе распространения и открытости программного кода.

Табл. 2. Общая информация о веб-серверах

Название

Автор и год создания

Распространение

OpenSource <#"552427.files/image003.gif">











Рис. 5. Регистрационная форма

Необходимо заполнить следующие поля:

-       Логин- указать желаемый логин;

-       Пароль- указать желаемый пароль, который будет впоследствии использоваться для авторизации в системе;

-       Повторите пароль- повторить введенный ранее пароль;

-       Эл. адрес- указать адрес электронной почты, на который будет отправлено письмо для подтверждения регистрации;

-       Код подтверждения- необходимо ввести код подтверждения, указанный на картинке.

После заполнения полей надо нажать кнопку «зарегистрировать».

) После нажатия кнопки запускаются специальные функции для проверки корректности заполнения всех полей формы.

Не допускается ввод пустых значений (то есть нельзя оставлять незаполненные поля).

Происходит проверка правильности введенного адреса электронной почты, в данном случае адрес должен соответствовать заданному шаблону имя@домен.ru(/com/org и т.п).

Длина всех строк для ввода информации в форму ограничена, а также запрещены специальные символы в целях обеспечения безопасности.

Организована проверка соответствия кода подтверждения введенному значению.

) Если все поля формы заполнены корректно, информация о пользователе попадает в базу данных потенциальных пользователей, пользователь определяется в группу «Потенциальных пользователей»

) Происходит автоматическая отправка письма подтверждения регистрации на указанный адрес электронной почты, которое содержит ссылку для активации учетной записи. Письмо представлено на рис. 6.

Рис. 6. Письмо подтверждения регистрации

5) Пользователь, получив письмо для подтверждения регистрации, нажимает ссылку и активирует свою учетную запись.

) После активации учетной записи пользователь получает доступ к своему «Личному кабинету» с ограниченным набором функциональных возможностей, в который он может попасть только после прохождения процедуры аутентификации и авторизации.

На этом завершается первый этап регистрации, алгоритм которого представлен на рис. 7.

Рис. 7. Алгоритм 1 этапа регистрации новых пользователей

Второй этап регистрации.

) Авторизовавшись в системе, пользователь (абитуриент либо потенциальный сотрудник вуза) должен предоставить подробную информацию о себе, заполнив специальную анкету.

) Дополнительная информация о пользователе попадает в базу данных потенциальных пользователей, а затем проходит проверку в соответствующем подразделении вуза.

) После прохождения проверки, если информация верна, данные о пользователе попадают в базу данных «Реальных пользователей», сюда же попадает информация о сотруднике вуза, который проверял документы и достоверность предоставленной информации.

) В том случае, если абитуриент поступил в СПбГУТ, либо потенциальный сотрудник получил работу в вузе, эти пользователи получают доступ к «Личному кабинету» с полным набором функциональных возможностей.

На этом завершается регистрация нового пользователя в системе.

Алгоритм 2 этапа регистрации новых пользователей представлен на рис. 8.












Рис. 8. Алгоритм 2 этапа регистрации новых пользователей

4.3 Выбор вида авторизации и его реализация

.3.1 Авторизация средствами web-сервера

Авторизация - это процесс подтверждения (проверки) прав пользователей на выполнение некоторых действий.

Для ограничения доступа к некоторым файлам можно использовать встроенные в Web-сервер Apache средства ограничения доступа.

В конфигурационном файле Apache httpd.conf можно указать необходимые параметры:

-       AuthName "Private Zone" -название защищенной зоны;

-       AuthType Basic - тип;

-       AuthUserFile -путь к файлу с паролями.

Этот файл должен быть создан в особом формате, так как пароли в нем хранятся в зашифрованном виде.

После соответствующих настроек при попытке запроса любого ресурса из защищенной папки посетителю будет выдан стандартный запрос логина и пароля, вид которого представлен на рис. 9.

Рис. 9. Запрос на вход в папку

4.3.2 Авторизация с помощью заголовка

В PHP есть команда Header - она позволяет отправить браузеру посетителя, запросившему страницу с содержащим эту команду сценарием, определенную служебную информацию - так называемый "заголовок". Для авторизации нам потребуется заголовок "WWW-Authenticate".

В том случае, если браузер получает заголовок "WWW-Authenticate", то он выдает посетителю стандартное окно для ввода логина и пароля (рис. 9.).

Этот вид авторизации тоже реализуется стандартными средствами web-сервера.

Преимущества 1 и 2 вида авторизации:

-       функции ограничения доступа встроены в Web-сервер Apache, поэтому нет необходимости создавать что-то новое;

-       высокая степень надежности;

-       не задействованы cookies.

Недостатки:

-       перенос файлов на другой сервер требует воссоздания .htpassw по новой;

-       довольно утомительно осуществлять смену пароля;

-       для создания файла с паролями необходимо специальное ПО;

-       стандартный вид;

-       проверка правильности логина и пароля осуществляется на каждой странице, где требуется авторизованный доступ. Если посетителей на сайте не очень много, то это вполне допустимо, однако при большом числе авторизованных посетителей нагрузка на web-сервер может оказаться немалой.

4.3.3 Авторизация с помощью cookies

Cookie - это файл в специальном формате, который присылается сервером браузеру посетителя сайта, расположенном на этом сервере. Браузер, если он поддерживает cookie (и эта поддержка в нем не отключена), помещает его в особое место и впоследствии отправляет назад на сервер при поступлении от него запроса.можно установить (т.е. прислать на компьютер посетителя) и средствами PHP. Для этого используется команда SetCookie, имеющая параметры:

-       имя cookie;

-       информация, записанная в cookie;

-       время жизни cookie.

Преимущества:

-       простота реализации;

-       удобство использования.

Недостатки:

-       некоторые пользователи ОТКЛЮЧАЮТ cookie;

-       проверка правильности логина и пароля осуществляется на каждой странице, поэтому возрастает нагрузка на web-сервер;

-       низкая степень надежности.

Во-первых, cookie с этими данными сохраняется на компьютере посетителя, а значит, теоретически может быть с него похищен.

Во-вторых, возможность захода на web-страницу "защищенной зоны" в течение некоторого времени без необходимости ввода логина и пароля может привести и к нежелательным последствиям - если посетитель забудет зайти на страницу выхода, то любой, кто воспользуется его компьютером до истечения срока действия cookie, с точки зрения сервера будет вполне легальным пользователем.

4.3.4 Авторизация с помощью сессий

"Сессия" - несколько абстрактное понятие, означающее нечто вроде "законченного периода работы с сайтом".

С помощью команд "поддержки сессий" PHP можно при заходе посетителя на сайт запоминать какие-либо переменные и потом эти переменные считывать или изменять на других страницах этого сайта. При этом в браузер посетителя передаются не сами эти переменные, а некий пароль, по которому сервер впоследствии этот браузер узнает и восстановит именно те значения переменных, которые были установлены для данного посетителя.

Иными словами - работа механизма сессий в PHP происходит так: Когда посетитель заходит на сайт и для него устанавливаются какие-либо переменные (сам ли он их вводит или, скажем, они берутся из базы данных), то команды начала и регистрации сессии сохраняют эти переменные в определенном месте на самом сервере .

Если у посетителя браузер принимает cookie, то ему высылается cookie (с определенным именем - по умолчанию "PHPSESSID"), содержащий так называемый "идентификатор сессии" , а если нет, то web-сервер автоматически помещает данный идентификатор в переменную PHPSESSID в каждую ссылку на выдаваемых посетителю страницах сайта (естественно, "внутреннюю" - то есть ведущую на другие страницы того же самого сайта, с тем же самым доменным именем). Таким образом, идентификатор передается на сервер при каждом заходе посетителя на какую-либо из страниц сайта, будучи либо взятым из соответствующего cookie, установленного посетителю при открытии сессии, либо из адресной строки ссылки, куда этот идентификатор автоматически помещается web-сервером.

Преимущества:

-       проверка правильности логина и пароля осуществляется единожды;

-       возможна авторизация и с включенными и с выключенными cookies. Этот метод можно применять при большом числе посетителей.

Недостатки:

-       Необходимо применить дополнительные меры безопасности при передаче параметров сессии.

Учитывая описанные достоинства и недостатки всех видов авторизации, оптимальным методом для реализации в работе по созданию системы доступа для Web-портала СпбГУТ будет авторизация с помощью сессий, так как при большом числе посетителей этот метод более приемлем за счет того, что проверка логина/пароля происходит единожды, а следовательно не будет перегрузки сервера, а также за счет независимости от cookies возможен охват большего числа посетителей. Этот метод отличается простотой, удобством использования и достаточно высокой степенью надежности, что является решающим аргументом в его пользу.

.3.5 Реализация алгоритма авторизации

Рассмотрим как реализован алгоритм авторизации в рамках данной работы.

На главной странице портала расположен блок авторизации, содержащий поля для ввода логина и пароля, представленный на рис. 10.










Рис. 10. Главная страница портала с блоком авторизации

Блок авторизации выглядит, как представлено на рис. 11.

Рис. 11. Блок авторизации

Для прохождения процедуры авторизации, необходимо ввести логин и пароль и нажать кнопку «Войти».

После нажатия кнопки запускается механизм аутентификации.

4.4 Применение механизма аутентификации

Аутентификация - проверка принадлежности субъекту доступа предъявленного им идентификатора <#"552427.files/image010.gif">

Рис. Одна итерация алгоритма SHA1

Инициализация.

Исходное сообщение разбивается на блоки по 512 бит в каждом. Последний блок дополняется до длины, кратной 512 бит. Сначала добавляется 1 а потом нули, чтобы длина блока стала равной (512 - 64 = 448) бит. В оставшиеся 64 бита записывается длина исходного сообщения в битах.

Если последний блок имеет длину более 448, но менее 512 бит, дополнение выполняется следующим образом: сначала добавляется 1, затем нули вплоть до конца 512-битного блока; после этого создается ещё один 512-битный блок, который заполняется вплоть до 448 бит нулями, после чего в оставшиеся 64 бита записывается длина исходного сообщения в битах. Дополнение последнего блока осуществляется всегда, даже если сообщение уже имеет нужную длину.

Инициализируются пять 32-битовых переменных.

Криптоанализ.

Криптоанализ хеш-функций направлен на исследование уязвимости к различного вида атакам. Основные из них:

•нахождение коллизий - ситуация, когда двум различным исходным сообщениям соответствует одно и то же хеш-значение.

•нахождение прообраза - исходного сообщения - по его хешу.

При решении методом «грубой силы»:

•вторая задача требует 2160 операций.

•первая же требует в среднем 2160/2 = 280 операций

От устойчивости хеш-функции к нахождению коллизий зависит безопасность электронной цифровой подписи с использованием данного хеш-алгоритма. От устойчивости к нахождению прообраза зависит безопасность хранения хешей паролей для целей аутентификации.

В январе 2005 года Vincent Rijmen и Elisabeth Oswald опубликовали сообщение об атаке на усеченную версию SHA-1 (53 раунда вместо 80), которая позволяет находить коллизии меньше, чем за 280 операций.

В феврале 2005 года Сяоюнь Ван, Йицунь Лиза Йинь и Хунбо Ю представили атаку на полноценный SHA-1, которая требует менее 269 операций.

Данный алгоритм шифрования, по оценкам специалистов, обладает высокой степенью надежности и рекомендован для обеспечения высокого уровня безопасности передаваемой информации, поэтому было принято решение использовать этот алгоритм шифрования при передаче паролей от пользователя к системе сервера.

5.4 Применение CAPTCHA

CAPTCHA (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» - полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) - компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.

В Интернете среди русскоязычных пользователей часто транскрибируется как капча.

Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую может решить человек, но которую несоизмеримо сложно предоставить для решения компьютеру. В основном это задачи на распознавание символов.

Применяются CAPTCHA для того, чтобы предотвратить множественные автоматические регистрации и отправления сообщений программами-роботами.

В модуле системы доступа на странице регистрации новых пользователей применяется captcha, которая представляет собой рисунок в искажённом виде, содержащий цифровой код, который необходимо ввести в поле «Код подтверждения».

После ввода этого кода происходит проверка правильности введенного значения кода подтверждения и если значение верно, то регистрация учитывается сервером и информация о пользователе попадает а базу данных.

Captca, применяемая при регистрации новых пользователей выглядит следующим образом:








Рис. Вид Captca (кода подтверждения)

В данном случае код подтверждения равен 616574


















Применение этого компьютерного теста защищает созданную информационную систему от автоматических регистраций и позволяет предотвратить заполнение базы данных ненужной информацией

ЗАКЛЮЧЕНИЕ

Результатом работы является полностью завершенный модуль системы доступа к ресурсам веб-портала СПбГУТ, представляющий собой совокупность механизмов распределения прав доступа к информационным ресурсам вуза и предусматривающий возможность регистрации новых пользователей, прохождения механизма аутентификации и авторизации зарегистрированных пользователей в системе, создание групп пользователей и объединение пользователей в группы, обеспечивающий достаточный уровень безопасности информационных ресурсов веб-портала.

Разработанный модуль обеспечивает необходимый уровень доступа пользователей к информационным ресурсам и входит в состав образовательного веб-портала СПбГУТ , который должен стать инструментом повседневной деятельности студентов и сотрудников СПбГУТ, а также предоставлять определенную информацию для любых посетителей веб-портала.

Разработка снабжена предельно полной документацией и комментариями к программному коду, что дает возможность дальнейшей модернизации системы в зависимости от потребностей вуза и новых условий, развития и наращивания системы, а также исключает зависимость от конкретного разработчика системы.

Гибкость системы заключается в возможности подключения неограниченного числа модулей к существующей системе, возможности создания бесконечного количества новых групп пользователей с неограниченным количеством пользователей и предоставления каждому из пользователей своего уникального набора прав доступа к информационным ресурсам веб-портала.

ПРИЛОЖЕНИЯ

Приложение 1. Системные требования

Требования к серверному программному обеспечению.

Для корректной работы системы требуется следующее программное обеспечение:

·        операционная система семейства Windows или Unix или MacOS;

·        Apache v. 2.2 или выше;

·        PHP v. 5.0 или выше;

·        MySQL v. 5.0 или выше;

·        ZendFramework 1.10 или выше/

Требования к клиентскому программному обеспечению.

Для корректной работы разработанной системы пользователю требуется:

·        Браузер

Приложение 2. Список файлов

Название папки

Название файла

Выполняемые функции

Стр

www

auth. php

выполняет авторизацию зарегистрированных польз.

76


AUTHform.html

форма авторизации зарегистрированных польз.

92


DB_users.php

создает БД REG и таблицу USERS

77


config.inc.php

файл конфигурации с данными для MySQL

79


functions.inc.php

файл с функциями (проверка/ отправка почты)

80


gut_acl.php

Скрипт распределения прав доступа

80


output_login.php

Скрипт для вывода логина авторизованного пользователя в «Личном кабинете»

89


output_users.php

Вывод информации о зарегистрированных пользователях из БД REG (DB_users.php)

89


REGform.html

форма регистрации пользователей

92


Registration.php

осуществляет регистрацию пользователей

86

www/img

capcha.php

организация кода подтверждения

91


Addict.ttf

файл шрифтов

-


1.jpeg

Картинка для кода подтверждения

-


2.jpeg

Картинка для кода подтверждения

-


3.jpeg

Картинка для кода подтверждения

-

www/tpl

default.php

Шаблон

92

Название папки

Название файла

Выполняемые функции

Стр

www/real_users

R_auth. php

выполняет авторизацию зарегистированных польз.

93


R_AUTHform.html

форма авторизации зарегистированных польз.

-


university8.php

создает БД учета успеваемости

-


config.inc.php

файл конфигурации с данными для MySQL

-


R_gut_acl.php

Скрипт распределения прав доступа

96


sem_show.php

Вывод данных о логинах/паролях пользователей из БД university8 (учета успеваемости)

-


R_output_login

Скрипт для вывода логина авторизованного пользователя группы «Реальных пользователей» в «Личном кабинете»

95

www/ real_users/tpl

default.php

Шаблон

-

www/ real_users/resourses

redakt_ocenki_metodist.php

Ресурс редактирования оценок, доступный для подгруппы «Методист»

-


obzor_ocenki_prep.php

Ресурс просмотра оценок группы, доступный для подгруппы «Преподаватель»

-


ocenki_stud.php

Ресурс просмотра оценок, доступный для подгруппы «Студент»

-

www/ /library

Acl.php  Role.php+Resource.php и др.

Библиотека классов ZendFramework

-


Листинг скрипта auth. php:

<?php

// Инициализируем начало сессии_start();

//Поключаем файл конфигурации("config.inc.php");

//Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// сделать $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

//Если нет сессий(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID'])

{

//Если кнопка не нажата, отображаем форму(!$_POST['do']){

//Вывод ФОРМЫ авторизации("AUTHform.html");

}

//Если кнопка нажата

if($_POST['do']) {

//Проверяем данные

$login = $_POST['login'];

$upass = $_POST['password'];($login !='' AND $upass !='') {

//Создаем запрос

$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");

//Проверяем существует ли хоть одна запись

if(mysql_num_rows($q1)===1) {

//Если есть, то создаем сессии и перенаправляем на эту страницу

$r=mysql_fetch_array($q1);

$_SESSION['user'] = $r['nick'];

$_SESSION['password'] = $r['password'];

$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));

//скрипт РАСПРЕДЕЛЕНИЯ ПРАВ ДОСТУПА("gut_acl.php");

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("output_login.php");

@Header("Location: auth.php");

}{echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}

}{echo 'Введите данные';}

}

}{

скрипт для вывода логина авторизованного пользователя+ кнопки управления("output_login.php");

блок для вывода шаблонов страниц портала

if($_GET['page'] !='') {

@include("tpl/".$_GET['page'].".php");

}{ @include("tpl/default.php");}

}($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: auth.php");}

?>

Листинг скрипта DB_users.php:

<html>

<head>

<title>Create DataBase</title>

<meta charset=Windows-1251">

</head>

<body>

<?php

// Подключаемся к MySQL("SERVER", "localhost");("USERNAME", "root");("PASSWORD", "");

$link = mysql_connect (SERVER, USERNAME, PASSWORD);( !$link ) die ("Couldn't connect to MySQL");

// Создаем базу данных REG

$DB= mysql_query('CREATE DATABASE if not exists REG');(!$DB)

{("<br><b>Ошибка! Не удалось создать базу данных</b> %s", mysql_error()."<br>");

}

{"<br><b> База данных создана успешно</b><br>";

}

//Сделаем REG текущей базой данных

$registr = mysql_select_db('REG', $link);

if (!$registr)

{("<br><b>База данных недоступна</b> %s", mysql_error()."<br>");

}

{"<br><b>Соединение с базой данных установлено</b><br>";

}

// Создаем таблицу users

$DB_t1 = mysql_query('CREATE TABLE users

( id INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,VARCHAR( 30 ) NOT NULL,VARCHAR( 50 ) NOT NULL,VARCHAR( 50 ) NOT NULL,_id VARCHAR( 50 ) NOT NULL,INT( 1 ) NOT NULL,_date INT( 8 ) NOT NULL,INT( 8 ) NOT NULL )

');(!$DB_t1)

{("<br><b>Не удалось создать таблицу users</b> %s", mysql_error()."<br>");

}

{"<br><b>Таблица users создана успешно </b><br>";

}

//Завершаем работу с БД(!mysql_close($link))

{"<br><b>Не удалось завершить соединение с базой данных</b><br>";

}

{"<br><b>Соединение с базой данных завершено успешно</b><br>";

}

?>

</body>

</html>

Листинг скрипта config.inc.php:

<?php

//Файл конфигурации с данными для MySQL:

//Сервер

$DBSERVER = "localhost";

//Пользователь

$DBUSER = "root";

// Пароль

$DBPASS = "";

//База данных

$DB = "REG";

?>

Листинг скрипта functions.inc.php:

<?php

// Файл с функциями

//Функция проверки корректности введенного e-mail'а

function checkmail($mail) {

// удаляем крайние пробелы

$mail=trim($mail);

// если пусто - выход

if (strlen($mail)==0) return -1;(!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|".

"edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".

"9]{1,3}\.[0-9]{1,3})$/is",$mail))-1;$mail;

}

//Функция отправки почтыsendmail($mail,$subject,$message,$headers) {(mail($mail,$subject,$message,$headers))

{ return TRUE;}{return FALSE;}

}

?>

Листинг скрипта gut_acl.php:

<?php

// Путь к файлам с классами Zend'а

set_include_path('library');

// Подключаем необходимые классы_once 'Zend/Acl.php';_once 'Zend/Acl/Role.php';_once 'Zend/Acl/Resource.php';

// Создание списка контроля доступа ACL (объект Zend_Acl)

$acl = new Zend_Acl();

// ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЕЙ(РОЛЕЙ)

// Выполним добавление ГРУПП пользователей

//ГРУППА действующих(реальных) пользователей

$acl->addRole(new Zend_Acl_Role('users_group'))

//Подгруппа учащиеся=group_std

>addRole(new Zend_Acl_Role('group_std'), 'users_group')

//Подгруппа сотрудники=group_sotrud

>addRole(new Zend_Acl_Role('group_sotrud'),'users_group');

//ГРУППА возможных(потенциальных) пользователей

$acl->addRole(new Zend_Acl_Role('pt_users_group'))

//подгруппа потенциальные учащиеся=pt_group_std

->addRole(new Zend_Acl_Role('pt_group_std'), 'pt_users_group')

//подгруппа потенциальные сотрудники=pt_group_sotrud

->addRole(new Zend_Acl_Role('pt_group_sotrud'), 'pt_users_group');

// Добавление пользователей без наследования прав

// пользователь ГОСТЬ

$acl->addRole(new Zend_Acl_Role('guest'))

// АДМИНИСТРАТОР web-портала

>addRole(new Zend_Acl_Role('admin'))

// Добавление ПОДГРУПП пользователей с наследованием прав от 3-х категорий

//Подгруппы действующих(реальных) пользователей:

//Подгруппа группы сотрудники МЕТОДИСТ=metodist

->addRole(new Zend_Acl_Role('metodist'),array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники преподаватель=prepodavatel

>addRole(new Zend_Acl_Role('prepodavatel'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники администрация(административная должность)=administration

->addRole(new Zend_Acl_Role('administration'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы учащиеся СТУДЕНТ=student

>addRole(new Zend_Acl_Role('student'),array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся АСПИРАНТ=aspirant

>addRole(new Zend_Acl_Role('aspirant'), array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся РОДИТЕЛИ=roditeli :-)

->addRole(new Zend_Acl_Role('roditeli'), array('guest','users_group', 'group_std' ))

//Подгруппы возможных(потенциальных) пользователей (аналогично предыдущему блоку)

->addRole(new Zend_Acl_Role('pt_metodist'),array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_prepodavatel'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_administration'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_student'),array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_aspirant'), array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_roditeli'), array('guest','pt_users_group', 'pt_group_std' ));

// ДОБАВЛЕНИЕ РЕСУРСОВ

// defaultModule- МОДУЛЬ ПО УМОЛЧАНИЮ

$acl->add(new Zend_Acl_Resource('defaultModule'));

// UserController (общие функции)

$acl->add(new Zend_Acl_Resource('UserController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('registerAction'), 'UserController');

$acl->add(new Zend_Acl_Resource('loginAction') , 'UserController');

$acl->add(new Zend_Acl_Resource('logoutAction') , 'UserController');

// SiteController (страницы-разделы портала)

$acl->add(new Zend_Acl_Resource('SiteController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('news') , 'SiteController');

$acl->add(new Zend_Acl_Resource('about') , 'SiteController');

$acl->add(new Zend_Acl_Resource('history') , 'SiteController');

$acl->add(new Zend_Acl_Resource('structure'), 'SiteController');

$acl->add(new Zend_Acl_Resource('documrnts'), 'SiteController');

$acl->add(new Zend_Acl_Resource('education'), 'SiteController');

// UzoneController (личные кабинеты)

$acl->add(new Zend_Acl_Resource('UzoneController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('cabinet'), 'UzoneController');

// uchet_uspevModule- МОДУЛЬ УЧЕТА УСПЕВАЕМОСТИ

$acl->add(new Zend_Acl_Resource('uchet_uspevModule'));

// SpecController (должностные функции)

$acl->add(new Zend_Acl_Resource('SpecController'), 'uchet_uspevModule');

$acl->add(new Zend_Acl_Resource('redakt_ocenki_metodist') , 'SpecController');

$acl->add(new Zend_Acl_Resource('obzor_ocenki_prep') , 'SpecController');

$acl->add(new Zend_Acl_Resource('ocenki_stud') , 'SpecController');

//РАСПРЕДЕЛЕНИЕ РОЛЕЙ

$role='guest';(isset($_SESSION['SID']) )

{

//**подключить БД REG (в которой хранится таблица users- возможных(потенциальных) пользователей)

$db_REG=mysql_select_db('REG', $link) or die ('Can\'t use REG : ' . mysql_error());(!$db_REG)

{("<br><b>Database REG connection error!</b> %s", mysql_error()."<br>");

}

{"<br><b>Database POTENTIAL_USERS(=REG) online</b><br>";

}

$q00 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."'");(@mysql_num_rows($q00)==1)

{$role='pt_users_group';'Группа: ', $role, '<br />';}

}

//УСТАНОВКА ПРАВ ДОСТУПА К РЕСУРСАМ

// Разрешаем администратору портала все действия

$acl->allow('admin');

//Права доступа для гостя

// Разрешаем доступ к контроллеру UserController пользователю guest(гость)

$acl->allow('guest', 'UserController');

// Разрешаем доступ к контроллеру SiteController пользователю guest(гость)

$acl->allow('guest', 'SiteController');

// Запрещаем доступ к контроллеру UzoneController пользователю guest(гость)

$acl->deny('guest', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController пользователю guest(гость)

$acl->deny('guest', 'SpecController');

//Права доступа для подгруппы УЧАЩИЕСЯ

// Разрешаем доступ к контроллеру UserController группе group_std(учащиеся)

$acl->allow('group_std', 'UserController');

// Разрешаем доступ к контроллеру SiteController группе group_std(учащиеся)

$acl->allow('group_std', 'SiteController');

// Разрешаем доступ к контроллеру UzoneController группе group_std(учащиеся)

$acl->allow('group_std', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController группе group_std(учащиеся)

$acl->deny('group_std', 'SpecController');

//Права доступа для подгруппы СОТРУДНИКИ

// Разрешаем доступ к модулю 'defaultModule' группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'defaultModule');

// Разрешаем доступ к контроллеру UzoneController группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'UzoneController');

// Разрешаем доступ к ресурсу redakt_ocenki_metodist контроллера SpecController подгруппе metodist

$acl->allow('metodist', 'redakt_ocenki_metodist');

// Разрешаем доступ к ресурсу obzor_ocenki_prep контроллера SpecController подгруппе prepodavatel

$acl->allow('prepodavatel', 'obzor_ocenki_prep');

// Разрешаем доступ к ресурсу ocenki_stud контроллера SpecController подгруппе student

$acl->allow('student', 'ocenki_stud');

//ПРОВЕРКА ПРАВ ДОСТУПА'ACCESS CONTROL LIST:', '<br />';'Access to defaultModule for admin ', $acl->isAllowed('admin', 'defaultModule') ? "allowed" : "denied", '<br />';'Access to UserController for guest ', $acl->isAllowed('guest', 'UserController' ) ? "allowed" : "denied", '<br />';'Access to UzoneController for guest ',$acl->isAllowed('guest', 'UzoneController' ) ? "allowed" : "denied", '<br />';'Access to SpecController for group_std ',$acl->isAllowed('group_std','SpecController') ? "allowed" : "denied", '<br />';'Access to SpecController for group_sotrud ', $acl->isAllowed('group_sotrud','SpecController') ? "allowed" : "denied", '<br />';'Access to redakt_ocenki_metodist for metodist ', $acl->isAllowed('metodist','redakt_ocenki_metodist') ? "allowed" : "denied", '<br />';'Access to obzor_ocenki_prep for prepodavatel ', $acl->isAllowed('prepodavatel','obzor_ocenki_prep') ? "allowed" : "denied", '<br />';'Access to ocenki_stud for student ', $acl->isAllowed('student','ocenki_stud') ? "allowed" : "denied", '<br />';

//Вывод ресурсов($acl->isAllowed($role, 'redakt_ocenki_metodist')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/redakt_ocenki_metodist.php">редактировать оценки</a>';

}($acl->isAllowed($role, 'obzor_ocenki_prep')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/obzor_ocenki_prep.php">просмотр успеваемости</a>';

}($acl->isAllowed($role, 'ocenki_stud')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/ocenki_stud.php">просмотр оценок</a>';

}

?>

Листинг скрипта registration.php:

<?php

// Инициализируем начало сессии_start();

// Подключаем файл конфигурации и файл функций

include("config.inc.php");("functions.inc.php");

// Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// Делаем $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

if(!$_POST['do'] OR $_POST['do'] =='') {

// Генерируем шестизначный код для capcha(капчи)

//Вывод ФОРМЫ("REGform.html");

}

//Если данные отправлены($_POST['do'] !='') {

//Начинаем проверять входящие данные($_POST['sid'] == $_SESSION['uid']) {

//Создаем запрос к базе для проверки существования Пользователя

$nick= $_POST['nick'];_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'");

//Проверка результата запроса(mysql_affected_rows()==0) {

//Проверка введенных паролей($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass']){

//Проверяем адрес электронной почты(checkmail($_POST['mail']) !== -1) {

//Осуществляем регистарацию

//Генерируем uniq_id

$uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());

$pass = $_POST['pass'];

$email = $_POST['mail'];

//Создаем запрос для записи данных в БД

$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')");

//После запроса отправляем письмо пользователю, для активации аккаунта($r) {

// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку

$headers = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";

// Откуда пришло

$headers .= 'From:Сайт %sitename%' . "\r\n";

//Здесь указать e-mail, куда будут уходить сообщения

$mailto = $email;

$subject = "Подтверждение регистарции на веб-портале СпбГУТ";

$message = 'Для активации аккаунта пройдите по следующей ссылке

<a href="http://www.systemadostupa1.ru/registration.php?='.$uniq_id.'" target="_blank">http://www.systemadostupa1.ru/registration.php?activation='.$uniq_id.'</a>';

$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите Enter.';

//Отправляем сообщение(sendmail($mailto,$subject,$message,$headers) !== FALSE) {'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';

}{echo 'Регистрация невозможна: Повторите запрос позднее';}

}{echo 'Регистрация невозможна: Повторите запрос позднее';}

}{echo 'Регистрация невозможна: Электронный адрес должен соответствовать шаблону <b>name@domen.com</b><br/><a href="registration.php"/>назад</a>';}

}{echo 'Регистрация невозможна: Введенные пароли не совпадают<br/><a href="registration.php"/>назад</a>';}

}{ echo 'Регистрация невозможна: Пользователь с таким именем уже существует<br/><a href="registration.php"/>назад</a>';}_destroy();

}{ echo 'Регистрация невозможна: код подтверждения введен не верно<br/><a href="registration.php"/>назад</a>';}

}

//Активация аккаунта($_GET['activation'] AND $_GET['activation']!='') {

$uniq_id = $_GET['activation'];

//Создаем запрос

$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="auth.php">войти на сайт</a> используя данные

указанные при регистрации';}{echo 'Активация невозможна: профиль уже активирован';}

}

?>

Листинг скрипта output_login.php:

<?php

$q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");(@mysql_num_rows($q2)==1){

$r2 = @mysql_fetch_array($q2);'Вы: '.ucfirst($r2['nick']).'<br/>';'<a href="auth.php">главная</a> ';'<br/><a href="auth.php?exit=1">выход</a>';

}

?>

Листинг скрипта output_users.php:

<html>

<head>

<title>output info table USERS</title>

<meta charset=Windows-1251">

</head>

<body>

<?php

// Подключаемся к MySQL("SERVER", "localhost");("USERNAME", "root");("PASSWORD", "");

$link = mysql_connect (SERVER, USERNAME, PASSWORD);( !$link ) die ("Couldn't connect to MySQL");

//Сделаем REG текущей базой данных

$registr = mysql_select_db('REG', $link);(!$registr)

{("<br><b>База данных не доступна</b> %s", mysql_error()."<br>");

}

{"<br><b>База данных создана успешно</b><br>";

}

// Выбираем значения из таблицы users

$query = "SELECT id,nick,password,email,uniq_id,status, last_date,date FROM users";

//Проверяем наличие информации

$db1_1 = mysql_query($query);

if (!$db1_1)

{("<br><b>Нет данных</b> %s", mysql_error()."<br><br>");

}

{"<br><b>Данные найдены</b><br><br>";

}

//Формируем цикл для последовательного вывода данных

$z1 = mysql_num_rows($db1_1);

for ($i = 0; $i < $z1; $i = $i + 1)

{

// Обрабатываем ряд результата запроса и возвращаем ассоциативный массив

$r1 = mysql_fetch_assoc($db1_1);

//Вывод данных"<br>"."<b>Users #".$i."</b><br><br>";"id: "."<b>".$r1["id"]."</b>"."<br>";"nick: "."<b>".$r1["nick"]."</b>"."<br>";"password: "."<b>".$r1["password"].""."</b>"."<br>";"email "."<b>".$r1["email"]."</b>"."<br>";"uniq_id "."<b>".$r1["uniq_id"]."</b>"."<br>";"status "."<b>".$r1["status"]."</b>"."<br>";"last_date "."<b>".$r1["last_date"]."</b>"."<br>";"date "."<b>".$r1["date"]."</b>"."<br>";

}

//Завершаем работу с БД(!mysql_close($link))

{"<br><br><b> Не удалось завершить соединение с базой данных</b><br>";

}

{"<br><br><b>Соединение с базой данных завершено успешно</b><br>";

}

?>

</body>

</html>

Листинг скрипта capcha.php:

<?php

//Инициализируем начало сессии_start();

//Создаем изображение из 3-х возможных вариантов фона

$im=ImageCreateFromJpeg(round(mt_rand(1,3)).".jpg");

//Генерируем цвет надписи

$color=ImageColorAllocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

//Формируем надпись, используя шрифт($im, 23, mt_rand(-5,5), 3, 30, $color, "addict.ttf", $_SESSION['uid']);

//Указываем тип содержимого("Content-type: image/jpeg");

//Создаем и выводим изображение($im);

//Разрушаем изображение($im);

?>

Листинг формы AUTHform.html

<html>

<head>

<title>Авторизация</title>

</head>

<body>

<a href="registration.php">регистрация</a> <br/><br/>

<form name="1" action="" method="post">

<input name="login" type="text" value=""> <br/>

<input name="password" type="password" value=""> <br/>

<input name="do" type="submit" value="Войти">

</form>

</body>

</html>

Листинг формы REGform.html

<html>

<head>

<title>Регистрация</title>

</head>

<body>

<form action="" method="POST">

Логин: <input name="nick" type="text" value=""><br/>

Пароль: <input name="pass" type="password" value=""><br/>

Повторите пароль: <input name="rpass" type="password" value=""><br/>

Эл.адрес: <input name="mail" type="text" value="name@domen.com"><br/>

<img src="img/capcha.php?sid='.$_SESSION['uid'].'"/> <br/>

<input name="sid" type="text" value=""><br/><br/>

<input name="do" type="submit" value="зарегистрировать">

</form>

</body>

</html>

Листинг скрипта default.php:

<?php'ШАБЛОН.php';

?>

Листинг скрипта R_auth.php:

<?php

// Инициализируем начало сессии_start();

//Поключаем файл конфигурации("R_config.inc.php");

//Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// сделать $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

//Если нет сессий(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID'])

{

//Если кнопка не нажата, отображаем форму(!$_POST['do']){

//Вывод ФОРМЫ авторизации("R_AUTHform.html");

}

//Если кнопка нажата

if($_POST['do']) {

//Проверяем данные

$login = $_POST['login'];

$upass = $_POST['password'];($login !='' AND $upass !='') {

//Создаем запрос

$q1=mysql_query("SELECT * FROM students WHERE students_nick='".$login."' AND students_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$q2=mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$login."' AND teachers_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$q3=mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$login."' AND metodist_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

//Проверяем существует ли хоть одна запись

if(mysql_num_rows($q1)===1 OR mysql_num_rows($q2)===1 OR mysql_num_rows($q3)===1) {(mysql_num_rows($q1)===1) {$zzz1=TRUE; echo 'НАЙДЕНА запись в табл студент','<br />';}(mysql_num_rows($q2)===1) {$zzz2=TRUE; echo 'НАЙДЕНА запись в табл преподаватель','<br />';}(mysql_num_rows($q3)===1) {$zzz3=TRUE; echo 'НАЙДЕНА запись в табл методист','<br />';}

//Если есть, то создаем сессии, запускаем скрипт прав доступа и перенаправляем на страницу

if ($zzz1)

{$r=mysql_fetch_array($q1);

$_SESSION['user'] = $r['students_nick'];

$_SESSION['password'] = $r['students_password'];

$_SESSION['SID'] = md5(crypt($r['students_nick'],$r['students_password']));

echo 'создана сессия для студента';

}($zzz2)

{$r=mysql_fetch_array($q2);

$_SESSION['user'] = $r['teachers_nick'];

$_SESSION['password'] = $r['teachers_password'];

$_SESSION['SID'] = md5(crypt($r['teachers_nick'],$r['teachers_password']));

echo 'создана сессия для преп';

}($zzz3)

{$r=mysql_fetch_array($q3);

$_SESSION['user'] = $r['metodist_nick'];

$_SESSION['password'] = $r['metodist_password'];

$_SESSION['SID'] = md5(crypt($r['metodist_nick'],$r['metodist_password']));

echo 'создана сессия для методиста';

}

//срипт РАСПРЕДЕЛЕНИЯ ПРАВ ДОСТУПА("R_gut_acl.php");

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("R_output_login.php");

// указать страницу личного кабинета

@Header("Location: R_auth.php");

}{echo 'Неверный логин/пароль; Повторите попытку авторизации';}

}{echo 'Введите данные';}

}

}{

//блок для вывода шаблонов страниц портала

//if($_GET['page'] !='') {

// @include("tpl/".$_GET['page'].".php");

// }

//else { @include("tpl/default.php");}

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("R_output_login.php");

}($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: R_auth.php");}

?>

Листинг скрипта R_output_login.php:

<?php

// Блок для вывода логина авторизованного пользователя( ВЫ: логин)

$qx1=mysql_query("SELECT * FROM students WHERE students_nick='".$login."' AND students_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$qx2=mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$login."' AND teachers_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$qx3=mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$login."' AND metodist_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

if(mysql_num_rows($qx1)===1 OR mysql_num_rows($qx2)===1 OR mysql_num_rows($qx3)===1)

{(mysql_num_rows($qx1)===1) $zzzx1=TRUE;(mysql_num_rows($qx2)===1) $zzzx2=TRUE;(mysql_num_rows($qx3)===1) $zzzx3=TRUE;($zzz1) {$r2=mysql_fetch_array($qx1); $nick='students_nick';}($zzz2) {$r2=mysql_fetch_array($qx2); $nick='teachers_nick';}($zzz3) {$r2=mysql_fetch_array($qx3); $nick='metodist_nick';}'Вы: '.ucfirst($r2[$nick]).'<br/>';'<a href="R_auth.php">Главная</a>','<br/>';'<br/><a href="R_auth.php?exit=1">Выход</a>';

}

Листинг скрипта R_gut_acl.php:

<?php

// Путь к файлам с классами Zend'а

set_include_path('library');

// Подключаем необходимые классы_once 'Zend/Acl.php';_once 'Zend/Acl/Role.php';_once 'Zend/Acl/Resource.php';

// Создание списка контроля доступа ACL (объект Zend_Acl)

$acl = new Zend_Acl();

// ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЕЙ(РОЛЕЙ)

// Выполним добавление ГРУПП пользователей

//ГРУППА действующих(реальных) пользователей

$acl->addRole(new Zend_Acl_Role('users_group'))

//Подгруппа учащиеся=group_std

>addRole(new Zend_Acl_Role('group_std'), 'users_group')

//Подгруппа сотрудники=group_sotrud

>addRole(new Zend_Acl_Role('group_sotrud'),'users_group');

//ГРУППА возможных(потенциальных) пользователей

$acl->addRole(new Zend_Acl_Role('pt_users_group'))

//подгруппа потенциальные учащиеся=pt_group_std

->addRole(new Zend_Acl_Role('pt_group_std'), 'pt_users_group')

//подгруппа потенциальные сотрудники=pt_group_sotrud

->addRole(new Zend_Acl_Role('pt_group_sotrud'), 'pt_users_group');

// Добавление пользователей без наследования прав

// пользователь ГОСТЬ

$acl->addRole(new Zend_Acl_Role('guest'))

// АДМИНИСТРАТОР web-портала

>addRole(new Zend_Acl_Role('admin'))

// Добавление ПОДГРУПП пользователей с наследованием прав от 3-х категорий

//Подгруппы действующих(реальных) пользователей:

//Подгруппа группы сотрудники МЕТОДИСТ=metodist

->addRole(new Zend_Acl_Role('metodist'),array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники преподаватель=prepodavatel

>addRole(new Zend_Acl_Role('prepodavatel'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники администрация(административная должность)=administration

->addRole(new Zend_Acl_Role('administration'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы учащиеся СТУДЕНТ=student

>addRole(new Zend_Acl_Role('student'),array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся АСПИРАНТ=aspirant

>addRole(new Zend_Acl_Role('aspirant'), array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся РОДИТЕЛИ=roditeli :-)

->addRole(new Zend_Acl_Role('roditeli'), array('guest','users_group', 'group_std' ))

//Подгруппы возможных(потенциальных) пользователей (аналогично предыдущему блоку)

->addRole(new Zend_Acl_Role('pt_metodist'),array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_prepodavatel'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_administration'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_student'),array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_aspirant'), array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_roditeli'), array('guest','pt_users_group', 'pt_group_std' ));

// ДОБАВЛЕНИЕ РЕСУРСОВ

// defaultModule- МОДУЛЬ ПО УМОЛЧАНИЮ

$acl->add(new Zend_Acl_Resource('defaultModule'));

// UserController (общие функции)

$acl->add(new Zend_Acl_Resource('UserController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('registerAction'), 'UserController');

$acl->add(new Zend_Acl_Resource('loginAction') , 'UserController');

$acl->add(new Zend_Acl_Resource('logoutAction') , 'UserController');

// SiteController (страницы-разделы портала)

$acl->add(new Zend_Acl_Resource('SiteController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('news') , 'SiteController');

$acl->add(new Zend_Acl_Resource('about') , 'SiteController');

$acl->add(new Zend_Acl_Resource('history') , 'SiteController');

$acl->add(new Zend_Acl_Resource('structure'), 'SiteController');

$acl->add(new Zend_Acl_Resource('documrnts'), 'SiteController');

$acl->add(new Zend_Acl_Resource('education'), 'SiteController');

// UzoneController (личные кабинеты)

$acl->add(new Zend_Acl_Resource('UzoneController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('cabinet'), 'UzoneController');

// uchet_uspevModule- МОДУЛЬ УЧЕТА УСПЕВАЕМОСТИ

$acl->add(new Zend_Acl_Resource('uchet_uspevModule'));

// SpecController (должностные функции)

$acl->add(new Zend_Acl_Resource('SpecController'), 'uchet_uspevModule');

$acl->add(new Zend_Acl_Resource('redakt_ocenki_metodist') , 'SpecController');

$acl->add(new Zend_Acl_Resource('obzor_ocenki_prep') , 'SpecController');

$acl->add(new Zend_Acl_Resource('ocenki_stud') , 'SpecController');

//РАСПРЕДЕЛЕНИЕ РОЛЕЙ

$role='guest';(isset($_SESSION['SID']) )

{

//**подключить БД учета успев (в которой хранятся таблицы действующих(реальных) пользователей)

$db_uni=mysql_select_db('university8', $link) or die ('Can\'t use university : ' . mysql_error());(!$db_uni)

{("<br><b>Database УЧЕТ_УСПЕВАЕМОСТИ connection error!</b> %s", mysql_error()."<br>");

}

{"<br><b>Database university online</b><br>";

}

$q01 = @mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$_SESSION['user']."'AND metodist_password='".$_SESSION['password']."' ");(@mysql_num_rows($q01)==1)

{$role='metodist';echo 'Группа: ',$role, '<br />';}{

$q02 = @mysql_query("SELECT * FROM students WHERE students_nick='".$_SESSION['user']."' AND students_password='".$_SESSION['password']."'");(@mysql_num_rows($q02)==1) {$role='student';echo 'Группа: ',$role, '<br />';}{

$q03 = @mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$_SESSION['user']."' AND teachers_password='".$_SESSION['password']."'");(@mysql_num_rows($q03)==1) {$role='prepodavatel';echo'Группа: ', $role, '<br />';}{

$q04 = @mysql_query("SELECT * FROM administration WHERE administration_nick='".$_SESSION['user']."' AND administration_password='".$_SESSION['password']."'");(@mysql_num_rows($q04)==1) {$role='administration';echo'Группа: ', $role, '<br />';}{

$q05 = @mysql_query("SELECT * FROM aspirants WHERE aspirants_nick='".$_SESSION['user']."' AND aspirants_password='".$_SESSION['password']."'");(@mysql_num_rows($q05)==1) {$role='aspirant';echo'Группа: ', $role, '<br />';}{

$q06 = @mysql_query("SELECT * FROM roditeli WHERE roditeli_nick='".$_SESSION['user']."' AND roditeli_password='".$_SESSION['password']."'");(@mysql_num_rows($q06)==1) {$role='roditeli';echo'Группа: ', $role, '<br />';}

}

}

}

}

}

}

//УСТАНОВКА ПРАВ ДОСТУПА К РЕСУРСАМ

// Разрешаем администратору портала все действия

$acl->allow('admin');

//Права доступа для гостя

// Разрешаем доступ к контроллеру UserController пользователю guest(гость)

$acl->allow('guest', 'UserController');

// Разрешаем доступ к контроллеру SiteController пользователю guest(гость)

$acl->allow('guest', 'SiteController');

// Запрещаем доступ к контроллеру UzoneController пользователю guest(гость)

$acl->deny('guest', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController пользователю guest(гость)

$acl->deny('guest', 'SpecController');

//Права доступа для подгруппы УЧАЩИЕСЯ

// Разрешаем доступ к контроллеру UserController группе group_std(учащиеся)

$acl->allow('group_std', 'UserController');

// Разрешаем доступ к контроллеру SiteController группе group_std(учащиеся)

$acl->allow('group_std', 'SiteController');

// Разрешаем доступ к контроллеру UzoneController группе group_std(учащиеся)

$acl->allow('group_std', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController группе group_std(учащиеся)

$acl->deny('group_std', 'SpecController');

//Права доступа для подгруппы СОТРУДНИКИ

// Разрешаем доступ к модулю 'defaultModule' группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'defaultModule');

// Разрешаем доступ к контроллеру UzoneController группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'UzoneController');

// Разрешаем доступ к ресурсу redakt_ocenki_metodist контроллера SpecController подгруппе metodist

$acl->allow('metodist', 'redakt_ocenki_metodist');

// Разрешаем доступ к ресурсу obzor_ocenki_prep контроллера SpecController подгруппе prepodavatel

$acl->allow('prepodavatel', 'obzor_ocenki_prep');

// Разрешаем доступ к ресурсу ocenki_stud контроллера SpecController подгруппе student

$acl->allow('student', 'ocenki_stud');

//ПРОВЕРКА ПРАВ ДОСТУПА'ACCESS CONTROL LIST:','<br />';'Access to defaultModule for admin ', $acl->isAllowed('admin', 'defaultModule') ? "allowed" : "denied", '<br />';'Access to UserController for guest ', $acl->isAllowed('guest', 'UserController' ) ? "allowed" : "denied", '<br />';'Access to UzoneController for guest ',$acl->isAllowed('guest', 'UzoneController' ) ? "allowed" : "denied", '<br />';'Access to SpecController for group_std ',$acl->isAllowed('group_std','SpecController') ? "allowed" : "denied", '<br />';'Access to SpecController for group_sotrud ', $acl->isAllowed('group_sotrud','SpecController') ? "allowed" : "denied", '<br />';'Access to redakt_ocenki_metodist for metodist ', $acl->isAllowed('metodist','redakt_ocenki_metodist') ? "allowed" : "denied", '<br />';'Access to obzor_ocenki_prep for prepodavatel ', $acl->isAllowed('prepodavatel','obzor_ocenki_prep') ? "allowed" : "denied", '<br />';'Access to ocenki_stud for student ', $acl->isAllowed('student','ocenki_stud') ? "allowed" : "denied", '<br />';

//Вывод ресурсов($acl->isAllowed($role, 'redakt_ocenki_metodist')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/redakt_ocenki_metodist.php">редактировать оценки</a><br/><br/>';

}($acl->isAllowed($role, 'obzor_ocenki_prep')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/obzor_ocenki_prep.php">просмотр успеваемости</a><br/><br/>';

}($acl->isAllowed($role, 'ocenki_stud')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/ocenki_stud.php">просмотр оценок</a><br/><br/>';

}

?>

В этой главе были представлены основные фрагменты кода системы. Приводить тут полный код программы не представляется возможным, из-за его огромного объема.

Полный код приложения можно посмотреть на прилагаемом диске.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!