Підсистема реєстрації

 

Підсистема реєстрації потрібна для того, щоб у систему можна було додавати користувачів. На даному етапі розробки системи, користувача можна зареєструвати двома способами:

а) реєстрація користувачем;

б) реєстрація системним адміністратором.

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

У другому випадку, системний адміністратор самостійно вводить дані користувача, задає йому роль у системі(на даному етапі присутні лише дві ролі – юзер та адміністратор, причому один користувач може об’єднувати у собі обидві ці ролі). Після додавання всієї інформації про користувача та успішної реєстрації користувач, після авторизації, може приступати до роботи у системі.

Програмний код реєстрації користувача приведено нижче:

 

String name = (String) req.getParameter("name");

UserManagerImpl um = new UserManagerImpl();

User user = um.load(name);

if (user == null) {

req.getSession().setAttribute("show_pass_error", "");

user = new User();

user.setName(name);

Date d = new Date();

boolean er = false;

List errors_date = new ArrayList();

user.setBirth(d);

user.setEmail(req.getParameter("eMail"));

user.setFirstName(req.getParameter("firstName"));

user.setLastName(req.getParameter("lastName"));

user.setPassword(req.getParameter("password"));

try {

StringTokenizer st = new StringTokenizer(req

.getParameter("birthDay"), "-");

d.setDate(Integer.parseInt(st.nextToken()));

d.setMonth(Integer.parseInt(st.nextToken()) - 1);

d.setYear(Integer.parseInt(st.nextToken()) - 1900);

} catch (Exception e) {

errors_date.add("error in date");

er = true;

}

if (!er) {

UserValidator valid = new UserValidator();

List errors = valid.vilidateFields(user);

if (errors.size() > 0) {

System.out.println("have errors");

req.getSession().setAttribute("errors", errors);

resp.sendRedirect("regestry.jsp");

} else {

RoleManagerImpl rm = new RoleManagerImpl();

Role role = rm.getRole("user");

user.addRole(role);

um.create(user);

role = (Role) req.getSession().getAttribute("role");

if (role!= null) {

try {

if (role.getRole().equals("admin")) {

resp.sendRedirect("getallusers.jsp");

} else {  resp.sendRedirect("registergood.jsp");

}

} catch (Exception e) { resp.sendRedirect("registergood.jsp");

}

} else {

resp.sendRedirect("registergood.jsp");

}

}

} else {

user.setBirth(null);

req.getSession().setAttribute("erruser", user);

req.getSession().setAttribute("errors", errors_date);

resp.sendRedirect("regestry.jsp");

}

} else {

String error = "Error, same login has exist already";

req.getSession().setAttribute("show_pass_error", error);

resp.sendRedirect("regestry.jsp"); }

Адміністратор та користувач, під час реєстрації повинні ввести вісі дані коректно, тому варіація та зберігання даних про користувача однакове. Приведений вище код буде виконаний при будь-якому з видів реєстрації.

 

Підсистема додавання електронного документу

В основу концепцій роботи підсистеми документообігу покладено принцип, який можна описати наступними кроками:

а) користувач завантажує за допомогою форми на сервер деякий документ;

б) документ зберігається на жорсткому диску сервера;

в) документ реєструється у реєстрі документів, що було завантажено;

г) користувачу, що завантажив документ надаються права на редагування документу;

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

Завдяки тому, що данні про електронний документ зберігаються у БД, а сам документ на жорсткому диску, дана система виграє час на пошуку документів(оскільки БД не засмічується великими за обсягами документами), і водночас виграє час на доступі до файлів, за рахунок майже прямих посилань(детальніше це описано в описі підсистеми ведення статистики редагування документів).

Програмний код завантаження документу має вигляд:

 

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();

fileItemFactory.setSizeThreshold(1 * 1024); // 1 KB

fileItemFactory.setRepository(tmpDir);

ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);

try {

List items = uploadHandler.parseRequest(request);

Iterator itr = items.iterator();

User user = (User)request.getSession().getAttribute("user");

request.getSession().setAttribute("user", user);

DocumentManagerImpl documentManagerImpl = new DocumentManagerImpl();

while (itr.hasNext()) {

FileItem item = (FileItem) itr.next();

if (!item.isFormField()) {

File file = new File(destinationDir, item.getName());

item.write(file);

Document document = new Document();

document.setName(item.getName());

document.setPath(DESTINATION_DIR_PATH+"//"+item.getName());

Set<User> userSet = new HashSet<User>();

userSet.add(user);

document.setUser(userSet);

documentManagerImpl.create(document);

}

}

response.sendRedirect("index.jsp");

} catch (FileUploadException ex) {

log("Error encountered while parsing the request", ex);

} catch (Exception ex) {

log("Error encountered while uploading file", ex);

}}

Менеджер роботи з документами DocumentManagerImpl під час додавання до системи документу присвоює йому версію номер один, та задає ім’я влсника.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: