Социальная сеть
Разработка модели системы. Оценка методологии моделирования предметной области. Анализ диаграмм декомпозиции функции. Определение дополнительных ограничений целостности. Описание групп пользователей и прав доступа. Разработка алгоритмов работы системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.03.2016 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>${authority.id}</td>
<td>${authority.authority?.encodeAsHTML()}</td>
<td>${authority.description?.encodeAsHTML()}</td>
<td class="actionButtons">
<span class="actionButton">
<g:link action="show" id="${authority.id}">Show</g:link>
</span>
</td>
</tr>
</g:each>
</tbody>
</table>
</div>
<div class="paginateButtons">
<g:paginate total="${Role.count()}" />
</div>
</div>
</body>
<head>
<meta name="layout" content="old_main"/>
<title>Show Role</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir: '/secret')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Role List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New Role</g:link></span>
</div>
<div class="body">
<h1>Show Role</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">ID:</td>
<td valign="top" class="value">${authority.id}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">soc.Role Name:</td>
<td valign="top" class="value">${authority.authority}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Description:</td>
<td valign="top" class="value">${authority.description}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">People:</td>
<td valign="top" class="value">${authority.people}</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="${authority?.id}"/>
<span class="button"><g:actionSubmit class="edit" value="Edit"/></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');"
value="Delete"/></span>
</g:form>
</div>
</div>
</body>
<!doctype html>
<html>
<head>
<meta name="layout" content="basic">
<title>Администраторская</title>
</head>
<body>
<article>
<div class="title">
<h1>Ресурсы для управления</h1>
</div>
<div class="wrapper">
<div class="main_block">
<h2><g:link controller="user" action="list">Пользователи</g:link></h2><br>
<h2><g:link controller="role" action="list">Роли</g:link></h2><br>
<h2><g:link controller="user" action="changeRole">Сменить роль</g:link></h2><br>
<h2><g:link controller="community" action="list">Сообщества</g:link></h2><br>
</div>
</div>
<div class="clear"></div>
</article>
</body>
</html>
<!doctype html>
<html>
<head>
<title>Grails Runtime Exception</title>
<meta name="layout" content="main">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'errors.css')}" type="text/css">
</head>
<body>
<g:renderException exception="${exception}" />
</body>
</html>
<!doctype html>
<html>
<head>
<meta name="layout" content="main"/>
</head>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Успешная регистрация!</title>
<link rel="stylesheet" href="${resource(dir: 'css', file: 'style.css')}" type="text/css">
<g:javascript library='application'/>
<g:javascript library='scriptaculous'/>
</head>
<body>
<div id="success">
<h1>${flash.message}</h1><br>
<a href="<g:createLink controller="basic" action="index"/>">На главную страницу</a>
</div>
</body>
</html>
Службы
import javax.mail.MessagingException
import org.springframework.mail.MailException
import org.springframework.mail.SimpleMailMessage
/**
* Simple service for sending emails.
*
* Work is planned in the Grails roadmap to implement first-class email
* support, so there's no point in making this code any more sophisticated.
*
* @author Haotian Sun
*/
class EmailerService {
boolean transactional = false
def mailSender
def mailMessage // a "prototype" email instance
/**
* Send a allComm of emails.
*
* @param mails a allComm of maps
*/
def sendEmails(mails) {
// Build the mail messages
def messages = []
for (mail in mails) {
// newComm a copy of the default message
def message = new SimpleMailMessage(mailMessage)
message.to = mail.to
message.text = mail.text
message.subject = mail.subject
messages << message
}
// Send them all together
try {
mailSender.send(messages as SimpleMailMessage[])
}
catch (MailException e) {
log.error "Failed to send emails: $e.message", e
}
catch (MessagingException e) {
log.error "Failed to send emails: $e.message", e
}
}
}
package soc
class CommunityService {
private long communityID
public void setCommunity(def num) {
communityID = num as long
}
public Community getCommunity() {
return Community.get(communityID)
}
}
package soc
class QuoteService {
boolean transactional = false
def getRandomQuote() {
null
/*
def allQuotes = Quote.list()
def randomQuote = null
if (allQuotes.size() > 0) {
def randomIdx = new Random().nextInt(allQuotes.size())
randomQuote = allQuotes[randomIdx]
} else {
randomQuote = getStaticQuote()
}
return randomQuote
*/
}
def getStaticQuote() {
/*
return new Quote(author: "Anonymous",
content: "Real Programmers Don't eat quiche")
*/
null
}
def serviceMethod() {}
}
package soc
class RolesService {
def authenticateService
private static final String ROLE_ADMIN = "ROLE_ADMIN"
private static final String ROLE_RECTOR = "ROLE_RECTOR"
private static final String ROLE_TEACHER = "ROLE_TEACHER"
private static final String ROLE_STUDENT = "ROLE_STUDENT"
private static final String ROLE_USER = "ROLE_USER"
private static final String ADMIN_NAME = "Администратор"
private static final String RECTOR_NAME = "Управляющий"
private static final String TEACHER_NAME = "Преподаватель"
private static final String STUDENT_NAME = "Студент"
private static final String USER_NAME = "Пользователь"
String getAdminName() {
return ADMIN_NAME
}
String getRectorName() {
return RECTOR_NAME
}
String getTeacherName() {
return TEACHER_NAME
}
String getStudentName() {
return STUDENT_NAME
}
String getUserName() {
return USER_NAME
}
String getAdmin() {
return ROLE_ADMIN
}
String getRector() {
return ROLE_RECTOR
}
String getTeacher() {
return ROLE_TEACHER
}
String getStudent() {
return ROLE_STUDENT
}
String getUser() {
return ROLE_USER
}
boolean isMember(User user) { // исправить
if (!user) return false
User findUser = Member.findByUser(user) as User
return findUser as boolean
}
Role getRole(String name) {
return Role.findByAuthority(name)
}
}
package soc
import java.security.SecureRandom
class SecureService {
private char[] dictionary = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p',
'z', 'x', 'c', 'v', 'b', 'n', 'm', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '+']
String generateKey(int size) {
int length = dictionary.length
String key = ""
for (int i = 0; i < size; i++) {
int index = new SecureRandom().nextInt(length)
char newSymbol = dictionary[index]
boolean upCase = new SecureRandom().nextBoolean()
if (upCase) newSymbol = newSymbol.toUpperCase()
key += newSymbol
}
return key
}
ArrayList<String> getGeneratedKeys(int count, int keyLength) {
ArrayList<String> keys = new ArrayList<String>();
while (count != 0) {
String currentKey = generateKey(keyLength);
if (keys.indexOf(currentKey) == -1) {
keys.add(currentKey);
count--;
}
}
return keys;
}
}
package soc
class UserService {
def deleteSecretFields(User user) {
if (!user) return null
user.password = ""
return user
}
}
Конфигурации
import soc.*
class BootStrap {
def authenticateService
def rolesService
def init = { servletContext ->
createAdminUserIfRequired()
}
def createAdminUserIfRequired() {
if (!User.findByLogin("admin")) {
def userRole = Role.findByAuthority(rolesService.user) ?: new Role(authority: rolesService.user, name: rolesService.userName).save() // failOnError: true
def studentRole = Role.findByAuthority(rolesService.student) ?: new Role(authority: rolesService.student, name: rolesService.studentName).save()
def teacherRole = Role.findByAuthority(rolesService.teacher) ?: new Role(authority: rolesService.teacher, name: rolesService.teacherName).save()
def rectorRole = Role.findByAuthority(rolesService.rector) ?: new Role(authority: rolesService.rector, name: rolesService.rectorName).save()
def adminRole = Role.findByAuthority(rolesService.admin) ?: new Role(authority: rolesService.admin, name: rolesService.adminName).save()
println "Fresh Database. Creating ADMIN user."
String pass = authenticateService.passwordEncoder("password")
UserRating _rating = new UserRating(value: 1000000).save()
UserProfile prof = new UserProfile(aboutMe: "Smart admin", birthday: new Date(3000, 10, 23),
name: "Fox", surname: "Smart", middle_name: "Server", rating: _rating,
work: "Full Master", state: "I will kill you!").save()
UserContact _contacts = new UserContact(content: "public@miem.edu.ru").save()
User superAdmin = new User(login: "admin", password: pass, email: "gotowhitesnow@gmail.com",
profile: prof, contacts: _contacts).save()
Role role = Role.findByAuthority(rolesService.admin)
// now add the User to the role
role.addToPeople(superAdmin)
// Записываем всё в базу
role.save()
addDepartments()
} else {
println "Existing admin user, skipping creation"
}
}
def addDepartments() {
Contact contact = new Contact(info: "Москва, ул. Пионерская Малая, 12\nМосква, Большой Трехсвятительский пер., 3").save()
TrainingDepartment department = new TrainingDepartment(shortName: "Миэм", contacts: contact,
name: "Московский государсвтенный университет электроники и математики", c_describe: "Чудесный технический университет").save()
}
def destroy = {
}
}
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?" {
constraints {
}
}
"/comm/edit/$id?"(controller: "community", action: "edit")
"/comm/show/$id?"(controller: "community", action: "show")
"/comm/delete/$id?"(controller: "community", action: "delete")
"/comm/list"(controller: "community", action: "list")
"/communities"(controller: "community", action: "allComm")
"/community/create_community"(controller: "community", action: "newComm")
"/community/save_new"(controller: "community", action: "saveComm")
"/community/comm$id?"(controller: "community", action: "showComm")
"/"(controller: "basic")
"/institution"(controller: "basic", action: "aboutInstitute")
"/department"(controller: "basic", action: "aboutCathedra")
"/contacts"(controller: "basic", action: "contacts")
"/secret"(controller: "secret")
"/success"(view: "success")
"500"(view: '/error')
}
}
package soc
class SecurityFilters {
def authenticateService
def rolesService
def filters = {
commChanges(controller: "community", action: "edit") {
before = {
}
}
enterSecret(controller: "secret", action: "*") {
before = {
User user = authenticateService.userDomain() as User
}
}
}
}
modules = {
application {
resource url:'js/application.js'
}
}
grails.servlet.version = "2.5" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"
grails.server.port.http = 9090
grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global") {
// uncomment to disable ehcache
// excludes 'ehcache'
}
log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
checksums true // Whether to verify checksums on resolve
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
grailsCentral()
mavenCentral()
// uncomment these to enable remote dependency resolution from public Maven repositories
//mavenCentral()
//mavenLocal()
//mavenRepo "http://snapshots.repository.codehaus.org"
//mavenRepo "http://repository.codehaus.org"
//mavenRepo "http://download.java.net/maven/2/"
//mavenRepo "http://repository.jboss.com/maven2/"
}
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
runtime 'mysql:mysql-connector-java:5.1.16'
}
plugins {
runtime ":hibernate:$grailsVersion"
runtime ":jquery:1.7.1"
runtime ":resources:1.1.6"
// Uncomment these (or add new ones) to enable additional resources capabilities
//runtime ":zipped-resources:1.0"
//runtime ":cached-resources:1.0"
//runtime ":yui-minify-resources:0.1.4"
build ":tomcat:$grailsVersion"
}
}
// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts
// grails.config.locations = [ "classpath:${appName}-config.properties",
// "classpath:${appName}-config.groovy",
// "file:${userHome}/.grails/${appName}-config.properties",
// "file:${userHome}/.grails/${appName}-config.groovy"]
// if (System.properties["${appName}.config.location"]) {
// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }
grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination
grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format
grails.mime.use.accept.header = false
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
xml: ['text/xml', 'application/xml'],
text: 'text/plain',
js: 'text/javascript',
rss: 'application/rss+xml',
atom: 'application/atom+xml',
css: 'text/css',
csv: 'text/csv',
all: '*/*',
json: ['application/json','text/json'],
form: 'application/x-www-form-urlencoded',
multipartForm: 'multipart/form-data'
]
// URL Mapping Cache Max Size, defaults to 5000
//grails.urlmapping.cache.maxsize = 1000
// What URL patterns should be processed by the resources plugin
grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*']
// The default codec used to encode data with ${}
grails.views.default.codec = "html" // none, html, base64
grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"
// enable Sitemesh preprocessing of GSP pages
grails.views.gsp.sitemesh.preprocess = true
// scaffolding templates configuration
grails.scaffolding.templates.domainSuffix = 'Instance'
//enable jquery
//grails.views.javascript.library="jquery"
//grails.views.javascript.library="prototype"
// Set to false to use the new Grails 1.2 JSONBuilder in the render method
grails.json.legacy.builder = false
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
// packages to include in Spring bean scanning
grails.spring.bean.packages = []
// whether to disable processing of multi part requests
grails.web.disable.multipart=false
// request parameters to mask when logging exceptions
grails.exceptionresolver.params.exclude = ['password']
// enable query caching by default
grails.hibernate.cache.queries = true
// set per-environment serverURL stem for creating absolute links
environments {
development {
grails.logging.jul.usebridge = true
}
production {
grails.logging.jul.usebridge = false
// TODO: grails.serverURL = "http://www.changeme.com"
}
}
// log4j configuration
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
//appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
//}
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
}
security.defaultRole = "ROLE_USER"
//log4j.logger.org.springframework.security='off,stdout'
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "root"
password = "1807"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = "net.sf.ehcache.hibernate.EhCacheProvider"
}
/*log4j = {
// ... whatever
debug 'org.hibernate.SQL',
'org.hibernate.transaction' // optionally
}*/
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update" // one of 'newComm', 'newComm-drop','update'
url = "jdbc:mysql://localhost:3306/base"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/base"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/base"
}
}
}
security {
// влючает безопасность (очень важный параметр)
active = true
useRequestMapDomainClass = true
loginUserDomainClass = "soc.User"
authorityDomainClass = "soc.Role"
requestMapClass = "soc.Requestmap"
userName = "login"
password = "password"
loginFormUrl = "/"
}
package soc
class UserTagLib {
def rolesService
def authenticateService
def fullName = {attrs, body ->
User user
if (attrs.user) {
user = attrs.user
} else {
user = authenticateService.userDomain() as User
}
String result = ""
if (user?.profile) {
result += "${user.profile.surname} ${user.profile.name} ${user.profile.middle_name}"
}
out << result.encodeAsHTML()
}
def fullStatus = {attrs, body ->
User user
if (attrs.user) {
user = attrs.user
} else {
user = authenticateService.userDomain() as User
}
String result = ""
String role = user.role.name ?: rolesService.userName
result += role
if (user?.profile) {
Department dep = user.profile.department
if (dep) result += ", ${dep.shortName}"
}
out << result.encodeAsHTML()
}
}
Размещено на Allbest.ru
...Подобные документы
Выбор основных средств и методологии проектирования и СУБД. Построение инфологической модели предметной области. Выявление полного перечня ограничений целостности. Описание информационных потребностей пользователей и выбор способов их реализации.
курсовая работа [2,9 M], добавлен 25.03.2011Анализ предметной области. Определение функций пользователя, атрибутов, ключей, сущностей и связей. Проектирование инфологической модели данных. Спецификация входных и выходных запросов. Разработка процедур и средств реализации ограничений целостности.
курсовая работа [7,2 M], добавлен 21.04.2015Анализ предметной области. Разработка информационной системы для улучшения качества обслуживания клиентов и автоматизации работы кассы столовой. Проектирование логической модели. Определение регламентированных запросов и описание клиентских приложений.
курсовая работа [1,6 M], добавлен 17.02.2013Описание предметной области и определение предметной области информационной системы детского сада. Разработка логической и физической модели базы данных дошкольного образовательного учреждения. Анализ функционала информационной системы детского сада.
курсовая работа [1,6 M], добавлен 20.04.2015Разработка и создание базы данных для аварийной службы. Анализ предметной области с описанием требований, правил, объектов и их атрибутов. Описание групп пользователей, средств управления разделением доступа и функциональных возможностей каждого класса.
курсовая работа [2,2 M], добавлен 27.11.2010Разработка информационной системы (ИС) учета и анализа возникновения дорожных заторов в городе Иркутск. Разработка структуры ИС (модулей системы, модели данных, матрицу доступа пользователей ИС). Основные средства моделирования при проектировании ИС.
лабораторная работа [1,3 M], добавлен 23.07.2012Разработка и внедрение автоматизированной информационной системы. Изучение основных процессов, протекающих в предметной области. Создание базы данных. Исследование средств защиты информации от несанкционированного доступа и идентификации пользователей.
курсовая работа [487,2 K], добавлен 17.03.2014Понятие и разновидности, подходы к формированию инфологических моделей. Модель информационной системы Захмана, направления ее развития и анализ результатов. Компоненты инфологического уровня описания предметной области. Сбор требований пользователей.
презентация [136,3 K], добавлен 19.08.2013Определение предметной области базы данных ("Сеть ресторанов"), виды ее моделирования. Первоначальный набор сущностей и атрибутов предметной области. Процесс смыслового наполнения базы данных. Атрибуты в концептуальной модели. Характеристика видов связей.
контрольная работа [510,9 K], добавлен 03.12.2014Определение класса защищённости АС. Разработка модели угроз. Выбор механизмов и средств защиты информационных ресурсов от несанкционированного доступа. Создание структуры каталогов для заданного количества пользователей автоматизированной системы.
курсовая работа [9,7 M], добавлен 12.05.2014Анализ предметной области и разработка проекта информационной системы по поддержке пользователей на базе 1С: Предприятие. Проведение формализации логических моделей информационных процессов и процедур в проектной системе. Реализация функций системы 1С.
дипломная работа [1,9 M], добавлен 27.01.2013Анализ информационной системы ИНЭК "Страховщик". Описание предметной области с использованием модели "сущность-связь". Моделирование бизнес-процессов с помощью IDEF0-диаграмм. Проектирование и разработка приложения в среде Delphi и создание интерфейса.
отчет по практике [4,9 M], добавлен 28.12.2014Информационные задачи и круг пользователей системы. Выработка требований и ограничений. Разработка проекта базы данных. Программная реализация проекта базы данных. Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных.
курсовая работа [706,2 K], добавлен 17.06.2012Анализ предметной области и требований пользователей для разработки программного средства по автоматизации работы склада строительных материалов. Описание работы с базой данных Access, позволяющей добавлять и редактировать информацию, оформлять накладную.
курсовая работа [601,1 K], добавлен 25.01.2013Анализ предметной области. Обоснование проектных решений по разработке автоматизированного рабочего места сотрудника канцелярии банка. Проектирование структуры базы данных и интерфейса системы. Разработка программных модулей и алгоритмов их работы.
дипломная работа [2,1 M], добавлен 18.10.2015Анализ предметной области, определение сущностей и связей. Разработка базы данных, создание таблиц и запросов. Исходные тексты процедур модулей. Тестирование информационной системы на корректность работы. Схема инфологической модели предметной области.
курсовая работа [4,3 M], добавлен 19.12.2011Описание предметной области системы "Аптека", описание ее основных атрибутов и элементов, назначение и функциональные особенности. Разработка модели данной программной системы средствами UML, прецеденты процесса и требования к нему, эффективность.
курсовая работа [1,2 M], добавлен 11.10.2013Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.
курсовая работа [1,1 M], добавлен 09.12.2014Разработка базы данных для предметной области "Подразделения предприятия – Рабочие помещения". Описание используемых данных, предметной области и результатной информации. Создание запросов, форм и отчетов в базе данных. Описание построения диаграмм.
курсовая работа [5,6 M], добавлен 24.07.2014