vedas
Clone or download
Modified Files
--- 'a/pom.xml'
+++ b/pom.xml
@@ -74,6 +74,23 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-security</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-taglibs</artifactId>
+
+ </dependency>
+
+<dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-config</artifactId>
+
+</dependency>
+
<dependency>
<groupId>javax.servlet</groupId>
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Controller/LoginController.java
@@ -0,0 +1,81 @@
+package com.GisSatellite.Server.Controller;
+
+import java.util.HashSet;
+import java.util.Map;
+
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.GisSatellite.Server.Entities.Role;
+import com.GisSatellite.Server.Entities.User;
+import com.GisSatellite.Server.Repository.UserRepository;
+
+@Controller
+public class LoginController {
+ @Autowired
+ private BCryptPasswordEncoder passwordEncoder;
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @RequestMapping("/")
+ public String Default() {
+ return "login";
+ }
+ @RequestMapping("/login")
+ public String login() {
+ return "login";
+ }
+ @RequestMapping("/logout")
+ public String logout() {
+
+ return "login";
+ }
+
+ @RequestMapping(value = "/register", method = RequestMethod.GET)
+ public String registerPage(Model model) {
+
+ model.addAttribute("user", new User());
+ return "register";
+ }
+
+ @RequestMapping(value = "/register", method = RequestMethod.POST)
+ public String saveRegisterPage(@Validated @ModelAttribute("user") User user, @RequestParam String role, BindingResult result, Model model,
+ Map<String, Object> map) {
+
+ model.addAttribute("user", user);
+ if (result.hasErrors()) {
+ return "register";
+ }
+ else
+
+ {
+
+
+ Role r=new Role();
+ r.setRole(role);
+ user.setRoles(new HashSet<Role>() {{
+ add(r);
+ }});
+ String pwd = user.getPassword();
+ String encryptPwd = passwordEncoder.encode(pwd);
+ user.setPassword(encryptPwd);
+ map.put("message", "Successful");
+ userRepository.save(user);
+
+ }
+ return "register";
+ }
+
+}
\ No newline at end of file
--- 'a/src/main/java/com/GisSatellite/Server/Controller/SatelliteController.java'
+++ b/src/main/java/com/GisSatellite/Server/Controller/SatelliteController.java
@@ -16,11 +16,13 @@ import org.locationtech.jts.geom.Geometr
import org.locationtech.jts.io.WKTReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -37,7 +39,7 @@ import com.sun.el.parser.ParseException;
@Controller
-
+@PreAuthorize("hasRole('admin')")
public class SatelliteController {
@@ -55,10 +57,16 @@ public class SatelliteController {
public String home1() {
return "satelliteform";
}
- @RequestMapping("/attributenew")
- public String homenew() {
+
+ @GetMapping("/admin")
+ public String admin() {
return "attributenew";
}
+
+ /*
+ * @RequestMapping("/attributenew") public String homenew() { return
+ * "attributenew"; }
+ */
@RequestMapping("/attribute")
public String home2() {
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Entities/Role.java
@@ -0,0 +1,31 @@
+package com.GisSatellite.Server.Entities;
+
+import javax.persistence.*;
+
+
+
+@Entity
+
+
+
+public class Role {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private int role_id;
+ private String role;
+ public int getRole_id() {
+ return role_id;
+ }
+ public void setRole_id(int role_id) {
+ this.role_id = role_id;
+ }
+ public String getRole() {
+ return role;
+ }
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+
+
+}
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Entities/User.java
@@ -0,0 +1,64 @@
+package com.GisSatellite.Server.Entities;
+
+import java.util.Set;
+
+import javax.persistence.*;
+
+
+
+
+
+@Entity
+
+@Table(name = "login", uniqueConstraints = { @UniqueConstraint(columnNames = "user_id") })
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private int user_id;
+ private String username;
+ private String password;
+
+
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+ @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
+ private Set<Role> roles;
+
+
+ public int getUser_id() {
+ return user_id;
+ }
+
+ public void setUser_id(int user_id) {
+ this.user_id = user_id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+
+
+ public Set<Role> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(Set<Role> roles) {
+ this.roles = roles;
+ }
+
+
+
+
+}
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Repository/RoleRepository.java
@@ -0,0 +1,10 @@
+package com.GisSatellite.Server.Repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.GisSatellite.Server.Entities.Role;
+
+
+public interface RoleRepository extends JpaRepository<Role, Integer> {
+
+}
\ No newline at end of file
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Repository/UserRepository.java
@@ -0,0 +1,12 @@
+package com.GisSatellite.Server.Repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.GisSatellite.Server.Entities.User;
+
+
+public interface UserRepository extends JpaRepository<User, Integer> {
+
+ User findByUsername(String username);
+
+}
\ No newline at end of file
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Security/MyAuthenticationSuccessHandler.java
@@ -0,0 +1,51 @@
+package com.GisSatellite.Server.Security;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.web.DefaultRedirectStrategy;
+import org.springframework.security.web.RedirectStrategy;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+
+public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
+
+ @Override
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
+ Authentication authentication) throws IOException, ServletException {
+
+ String targetUrl = determineTargetUrl(authentication);
+
+ if (response.isCommitted()) {
+ System.out.println("Response has already been committed. Unable to redirect to "
+ + targetUrl);
+ return;
+ }
+ RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
+ redirectStrategy.sendRedirect(request, response, targetUrl);
+ System.out.println("");
+ }
+ protected String determineTargetUrl(final Authentication authentication) {
+
+ Map<String, String> roleTargetUrlMap = new HashMap<>();
+ roleTargetUrlMap.put("ROLE_user", "/user");
+ roleTargetUrlMap.put("ROLE_admin", "/admin");
+
+ final Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
+ for (final GrantedAuthority grantedAuthority : authorities) {
+ String authorityName = grantedAuthority.getAuthority();
+ if(roleTargetUrlMap.containsKey(authorityName)) {
+ return roleTargetUrlMap.get(authorityName);
+ }
+ }
+
+ throw new IllegalStateException();
+ }
+}
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Security/SecurityConfig.java
@@ -0,0 +1,52 @@
+package com.GisSatellite.Server.Security;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+
+import com.GisSatellite.Server.Services.User_DetailsService;
+
+
+
+@Configuration
+@EnableWebSecurity
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+public class SecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Autowired
+ private User_DetailsService userDetailsService;
+
+
+ @Override
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ auth.userDetailsService(userDetailsService).passwordEncoder(encodePwd());
+
+ }
+ @Bean
+ public AuthenticationSuccessHandler myAuthenticationSuccessHandler(){
+ return new MyAuthenticationSuccessHandler();
+ }
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.authorizeRequests()
+ .antMatchers("/login","/register","/webjars/**","/**/*.js", "/**/*.css","/**/*.jpg","/**/*.png").permitAll()
+ .antMatchers("/openlayers").access("hasRole('admin')")
+ .anyRequest().authenticated().and()
+ .formLogin().loginPage("/login").successHandler(myAuthenticationSuccessHandler()).and()
+ .logout()
+ .logoutSuccessUrl("/login").permitAll().and()
+ .exceptionHandling().accessDeniedPage("/logout").and()
+ .headers().frameOptions().disable().and()
+ .csrf().disable();
+ }
+ @Bean
+ public BCryptPasswordEncoder encodePwd() {
+ return new BCryptPasswordEncoder();
+ }
+}
\ No newline at end of file
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Services/User_Details.java
@@ -0,0 +1,64 @@
+package com.GisSatellite.Server.Services;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import com.GisSatellite.Server.Entities.User;
+
+
+
+public class User_Details implements UserDetails {
+ private static final long serialVersionUID = -5584720112233431845L;
+
+ private User user;
+
+ @Override
+ public Collection<? extends GrantedAuthority> getAuthorities() {
+ return user.getRoles().stream().map(role -> new SimpleGrantedAuthority("ROLE_"+role.getRole()))
+ .collect(Collectors.toList());
+
+ }
+
+ @Override
+ public String getPassword() {
+ return user.getPassword();
+ }
+
+ @Override
+ public String getUsername() {
+ return user.getUsername();
+ }
+
+ @Override
+ public boolean isAccountNonExpired() {
+ return true;
+ }
+
+ @Override
+ public boolean isAccountNonLocked() {
+ return true;
+ }
+
+ @Override
+ public boolean isCredentialsNonExpired() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+}
--- /dev/null
+++ b/src/main/java/com/GisSatellite/Server/Services/User_DetailsService.java
@@ -0,0 +1,36 @@
+package com.GisSatellite.Server.Services;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Component;
+
+import com.GisSatellite.Server.Entities.User;
+import com.GisSatellite.Server.Repository.UserRepository;
+
+
+@Component
+public class User_DetailsService implements UserDetailsService{
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ User user=userRepository.findByUsername(username);
+ User_Details userDetails=null;
+ if (user!=null) {
+ userDetails=new User_Details();
+ userDetails.setUser(user);
+ }else {
+ throw new UsernameNotFoundException("User not exist with this name : "+username);
+ }
+
+
+ return userDetails;
+
+
+ }
+
+}
\ No newline at end of file
--- 'a/src/main/resources/static/assets/css/style.css'
+++ b/src/main/resources/static/assets/css/style.css
@@ -455,7 +455,7 @@ html body .b-all {
}
.text-muted {
- color: #99abb4!important
+ color: #fff!important
}
.text-warning {
@@ -2141,8 +2141,8 @@ form label {
animation-iteration-count: infinite;
animation-timing-function: linear;
position: absolute;
- top: 18px;
- left: 18px
+ top: 11px;
+ left: 11px
}
.right-sidebar {
@@ -3861,7 +3861,14 @@ table th {
}
table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_desc_disabled {
- background: transparent
+ /* background: transparent
+ background-color: #1976d2;
+ color: #ffffff;*/
+}
+.table thead
+{
+background-color: #1976d2;
+color:#fff;
}
table.dataTable thead .sorting_asc:after {
@@ -8112,8 +8119,8 @@ form p:last-child {
[type=checkbox]:checked, [type=checkbox]:not(:checked) {
position: absolute;
- left: -9999px;
- opacity: 0
+ /* left: -9999px;
+ opacity: 0 */
}
[type=checkbox] {}
@@ -8455,7 +8462,7 @@ input[type=checkbox]:not(:disabled).tabb
position: fixed;
top: 94px;
right: 20px;
- padding: 25px;
+ padding: 18px;
z-index: 10;
}
Binary files /dev/null and b/src/main/resources/static/assets/images/1 differ
Binary files /dev/null and b/src/main/resources/static/assets/images/6.jpg differ
Binary files /dev/null and b/src/main/resources/static/assets/images/alert/satelite.jpg differ
--- 'a/src/main/resources/static/mis/js/customscripts/search.js'
+++ b/src/main/resources/static/mis/js/customscripts/search.js
@@ -50,4 +50,5 @@ $(document).ready(function () {
console.log(data);
- }
\ No newline at end of file
+ }
+
\ No newline at end of file
--- /dev/null
+++ b/src/main/resources/static/mis/js/customscripts/tables.js
@@ -0,0 +1,101 @@
+$(document).ready(function () {
+defaultTable();
+});
+function defaultTable()
+ {
+ var data=allTableData();
+
+ loadtable(data);
+ }
+
+ //for datatable code
+
+ function loadtable(data){
+ console.log(data);
+ if ( $.fn.DataTable.isDataTable( '#getASIReportList' ) ) {
+ $("#getASIReportList").dataTable().fnDestroy();
+ $('#getASIReportList').empty();
+ }
+
+
+ var table=$('#getASIReportList').DataTable({
+ pageLength : 5,
+ dom: 'Bfrtip',
+ buttons: [
+ 'copy', 'csv', 'excel', 'pdf', 'print'
+ ],
+
+ 'processing': true,
+
+ 'columnDefs': [{
+ 'targets': 0,
+ 'searchable': false,
+ 'orderable': false,
+ 'className': 'dt-body-center',
+
+ 'render': function (data, type, full, meta){
+
+ var longlat='['+full.center_long+','+full.center_lat+']';
+
+ var lname='['+full.lllat+']';
+
+ return '<input type="checkbox" class="demo-checkbox" id="checkbox" onchange="Myzoom('+longlat+')" name="'+lname+'" value="' + $('<div/>').text(data).html() + '">';
+
+
+
+ },
+
+ }],
+
+
+
+
+
+ "data":data ,
+
+ columns : [{
+ title : '',
+ data : ''
+
+ },{
+ title : 'Layer Name',
+ data : 'layername'
+ }, {
+ title : 'Satellite',
+ data : 'satelite'
+ }, {
+ title : 'Sensor',
+ data : 'sansor'
+ },{
+ title: 'Date Of Pass',
+ data :'date'
+ }, {
+ title : 'Path',
+ data : 'path'
+ }, {
+ title : 'Row',
+ data : 'row',
+
+ }, {
+ title : 'Center latitude',
+ data : 'center_lat',
+
+ },{
+ title : 'Center longitude',
+ data : 'center_long',
+
+ }
+
+ ],
+
+
+
+ });
+
+
+
+ }
+//close datatable
+
+
+
\ No newline at end of file
--- 'a/src/main/resources/static/mis/js/services/misservices.js'
+++ b/src/main/resources/static/mis/js/services/misservices.js
@@ -48,12 +48,28 @@ function gttdatafromgeom(id)
});
return data;
-
-// let url = `http://localhost:9080/intersectbygeom/${id}`;
-// fetch(url).then((response)=>{
-// return response.json();
-// }).then((data)=>{
-// console.log(data);
-
-// })
+}
+function allTableData()
+{
+ var data=null;
+ $.ajax({
+ url:"findAll",
+ method:"GET",
+ dtaType:"json",
+ async: false,
+ data:{},
+ success:function(j)
+ {
+
+ console.log(j);
+ data=j;
+
+
+ },
+ error:function (error)
+ {
+ alert(error);
+ }
+ });
+ return data;
}
--- 'a/src/main/webapp/views/attributenew.jsp'
+++ b/src/main/webapp/views/attributenew.jsp
@@ -11,8 +11,8 @@
<meta name="description" content="">
<meta name="author" content="">
<!-- Favicon icon -->
- <link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon.png">
- <title>Admin Press Admin Template - The Ultimate Bootstrap 4 Admin Template</title>
+ <link rel="icon" type="image/png" sizes="16x16" href="assets/images/bisag_logo.png">
+ <title>SDIS</title>
<!-- Bootstrap Core CSS -->
<link href="assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- chartist CSS -->
@@ -35,6 +35,7 @@
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
+
</head>
<body class="fix-header fix-sidebar card-no-border">
@@ -426,9 +427,10 @@
<div class="col-lg-12">
<div class="card">
<div class="card-body">
- <h4 class="card-title">Sales Difference</h4>
- <h6 class="card-subtitle">Check the difference between two site</h6>
- <div id="morris-area-chart2" style="height: 335px;"></div>
+
+ <div class="table-responsive">
+ <table id="getASIReportList" class="table color-table " style="height: 335px;"></table >
+ </div>
</div>
</div>
</div>
@@ -522,6 +524,7 @@
<!-- Bootstrap tether Core JavaScript -->
<script src="assets/plugins/bootstrap/js/popper.min.js"></script>
<script src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
+ <script src="assets/plugins/datatables/jquery.dataTables.min.js"></script>
<!-- slimscrollbar scrollbar JavaScript -->
<script src="assets/js/jquery.slimscroll.js"></script>
<!--Wave Effects -->
@@ -580,7 +583,16 @@
<script src="customol/js/geomForm.js"></script>
<script src="mis/js/services/misservices.js"></script>
<script src="mis/js/customscripts/search.js"></script>
-
+<script src="mis/js/customscripts/tables.js"></script>
+ <script src=https://code.jquery.com/jquery-3.5.1.js></script>
+<script src=https://cdn.datatables.net/1.10.23/js/jquery.dataTables.min.js></script>
+<script src=https://cdn.datatables.net/buttons/1.6.5/js/dataTables.buttons.min.js></script>
+<script src=https://cdn.datatables.net/buttons/1.6.5/js/buttons.flash.min.js></script>
+<script src=https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js></script>
+<script src=https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js></script>
+<script src=https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js></script>
+<script src=https://cdn.datatables.net/buttons/1.6.5/js/buttons.html5.min.js></script>
+<script src=https://cdn.datatables.net/buttons/1.6.5/js/buttons.print.min.js></script>
</body>
--- /dev/null
+++ b/src/main/webapp/views/login.jsp
@@ -0,0 +1,136 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+<html lang="en">
+
+
+<!-- Mirrored from themedesigner.in/demo/admin-press/main/pages-login.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 04 May 2019 05:15:31 GMT -->
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <!-- Tell the browser to be responsive to screen width -->
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="description" content="">
+ <meta name="author" content="">
+ <!-- Favicon icon -->
+ <link rel="icon" type="image/png" sizes="16x16" href="assets/images/fbisag_logo.png">
+ <title>SDIS</title>
+ <!-- Bootstrap Core CSS -->
+ <link href="assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
+ <!-- Custom CSS -->
+ <link href="assets/css/style.css" rel="stylesheet">
+ <!-- You can change the theme colors from here -->
+ <link href="assets/css/colors/blue.css" id="theme" rel="stylesheet">
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+<![endif]-->
+</head>
+
+<body>
+ <!-- ============================================================== -->
+ <!-- Preloader - style you can find in spinners.css -->
+ <!-- ============================================================== -->
+ <div class="preloader">
+ <svg class="circular" viewBox="25 25 50 50">
+ <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" /> </svg>
+ </div>
+ <!-- ============================================================== -->
+ <!-- Main wrapper - style you can find in pages.scss -->
+ <!-- ============================================================== -->
+ <section id="wrapper">
+ <div class="login-register" style="background-image:Linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,.6)),url(assets/images/6.jpg);">
+ <div class="login-box card" style="background-color: #09162ac9;">
+ <div class="card-body">
+
+
+ <form class="form-horizontal form-material" action="/login" method="POST">
+ <div class="form-group">
+ <div class="col-xs-12 text-center">
+ <div class="user-thumb text-center"> <img alt="thumbnail" class="" width="100" src="assets/images/bisag_logo.png">
+
+ </div>
+ </div>
+ </div>
+ <c:if test="${param.error != null}">
+ <p class="card-description text-center"> Invalid username or password.</p>
+ </c:if>
+ <div class="form-group ">
+ <div class="col-xs-12">
+ <input class="form-control" type="text" required="" placeholder="Username" name="username"> </div>
+ </div>
+ <div class="form-group">
+ <div class="col-xs-12">
+ <input class="form-control" type="password" name="password" required="" placeholder="Password"> </div>
+ </div>
+ <div class="form-group row">
+ <!-- <div class="col-md-12 font-14"> -->
+ <!-- <div class="checkbox checkbox-primary pull-left p-t-0">
+ <input id="checkbox-signup" type="checkbox">
+ <label for="checkbox-signup"> Remember me </label>
+ </div> <a href="javascript:void(0)" id="to-recover" class="text-dark pull-right"><i class="fa fa-lock m-r-5"></i> Forgot pwd?</a> </div> -->
+ </div>
+ <div class="form-group text-center m-t-20">
+ <div class="col-xs-12">
+ <button class="btn btn-info btn-lg btn-block text-uppercase waves-effect waves-light" type="submit">Log In</button>
+ </div>
+ </div>
+
+ <div class="form-group m-b-0">
+ <div class="col-sm-12 text-center">
+ <div>Don't have an account? <a href="pages-register.html" class="text-info m-l-5"><b>Sign Up</b></a></div>
+ </div>
+ </div>
+ </form>
+ <form class="form-horizontal" id="recoverform" action="http://themedesigner.in/demo/admin-press/main/index.html">
+ <div class="form-group ">
+ <div class="col-xs-12">
+ <h3>Recover Password</h3>
+ <p class="text-muted">Enter your Email and instructions will be sent to you! </p>
+ </div>
+ </div>
+ <div class="form-group ">
+ <div class="col-xs-12">
+ <input class="form-control" type="text" required="" placeholder="Email"> </div>
+ </div>
+ <div class="form-group text-center m-t-20">
+ <div class="col-xs-12">
+ <button class="btn btn-primary btn-lg btn-block text-uppercase waves-effect waves-light" type="submit">Reset</button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </section>
+ <!-- ============================================================== -->
+ <!-- End Wrapper -->
+ <!-- ============================================================== -->
+ <!-- ============================================================== -->
+ <!-- All Jquery -->
+ <!-- ============================================================== -->
+ <script src="assets/plugins/jquery/jquery.min.js"></script>
+ <!-- Bootstrap tether Core JavaScript -->
+ <script src="assets/plugins/bootstrap/js/popper.min.js"></script>
+ <script src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
+ <!-- slimscrollbar scrollbar JavaScript -->
+ <script src="assets/js/jquery.slimscroll.js"></script>
+ <!--Wave Effects -->
+ <script src="assets/js/waves.js"></script>
+ <!--Menu sidebar -->
+ <script src="assets/js/sidebarmenu.js"></script>
+ <!--stickey kit -->
+ <script src="assets/plugins/sticky-kit-master/dist/sticky-kit.min.js"></script>
+ <script src="assets/plugins/sparkline/jquery.sparkline.min.js"></script>
+ <!--Custom JavaScript -->
+ <script src="assets/js/custom.min.js"></script>
+ <!-- ============================================================== -->
+ <!-- Style switcher -->
+ <!-- ============================================================== -->
+ <script src="assets/plugins/styleswitcher/jQuery.style.switcher.js"></script>
+</body>
+
+
+<!-- Mirrored from themedesigner.in/demo/admin-press/main/pages-login.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 04 May 2019 05:15:32 GMT -->
+</html>
--- /dev/null
+++ b/src/main/webapp/views/register.jsp
@@ -0,0 +1,215 @@
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+
+<!DOCTYPE html>
+<html lang="en">
+
+
+<!-- Mirrored from demos.creative-tim.com/material-dashboard-pro/examples/pages/login.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 20 Apr 2019 08:06:55 GMT -->
+<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
+<head>
+ <meta charset="utf-8" />
+ <link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-icon.png">
+ <link rel="icon" type="image/png" href="assets/img/favicon.png">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+ <title>
+ Material Dashboard PRO by Creative Tim
+ </title>
+ <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />
+ <!-- Extra details for Live View on GitHub Pages -->
+ <!-- Canonical SEO -->
+ <!-- <link rel="canonical" href="https://www.creative-tim.com/product/material-dashboard-pro" />
+ Social tags
+
+
+ Fonts and icons
+ <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:400,700|Material+Icons" />
+ <link rel="stylesheet" href="../../../../maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"> -->
+ <!-- CSS Files -->
+ <link href="assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
+ <!-- Custom CSS -->
+ <link href="assets/css/style.css" rel="stylesheet">
+ <!-- You can change the theme colors from here -->
+ <link href="assets/css/colors/blue.css" id="theme" rel="stylesheet">
+ <!-- Google Tag Manager -->
+
+</head>
+
+<body class="off-canvas-sidebar">
+ <!-- Extra details for Live View on GitHub Pages -->
+ <!-- Google Tag Manager (noscript) -->
+ <noscript>
+ <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NKDMSK6" height="0" width="0" style="display:none;visibility:hidden"></iframe>
+ </noscript>
+ <!-- End Google Tag Manager (noscript) -->
+ <!-- Navbar -->
+ <nav class="navbar navbar-expand-lg navbar-transparent navbar-absolute fixed-top text-white">
+ <div class="container">
+ <div class="navbar-wrapper">
+ <a class="navbar-brand" href="#pablo">Registration Page</a>
+ </div>
+
+ <!-- <div class="collapse navbar-collapse justify-content-end">
+ <ul class="navbar-nav">
+ <li class="nav-item">
+ <a href="../dashboard.html" class="nav-link">
+ <i class="material-icons">dashboard</i> Dashboard
+ </a>
+ </li>
+ <li class="nav-item ">
+ <a href="register.html" class="nav-link">
+ <i class="material-icons">person_add</i> Register
+ </a>
+ </li>
+ <li class="nav-item active ">
+ <a href="login.html" class="nav-link">
+ <i class="material-icons">fingerprint</i> Login
+ </a>
+ </li>
+ <li class="nav-item ">
+ <a href="lock.html" class="nav-link">
+ <i class="material-icons">lock_open</i> Lock
+ </a>
+ </li>
+ </ul>
+ </div> -->
+ </div>
+ </nav>
+ <!-- End Navbar -->
+ <div class="wrapper wrapper-full-page">
+ <div class="page-header login-page header-filter" filter-color="black" style="background-image: url('assets/img/login.jpg'); background-size: cover; background-position: top center;">
+ <!-- you can change the color of the filter page using: data-color="blue | purple | green | orange | red | rose " -->
+ <div class="container">
+ <div class="row">
+ <div class="col-lg-4 col-md-6 col-sm-8 ml-auto mr-auto">
+
+ <form:form action="register" modelAttribute="user" method="POST" class="form">
+ <div class="card card-login card-hidden">
+ <div class="card-header card-header-rose text-center">
+ <h4 class="card-title">Registration</h4>
+
+ </div>
+ <div class="card-body ">
+ ${message}
+ <c:if test="${param.error != null}">
+ <p class="card-description text-center">
+
+ Invalid username or password.
+
+ </p>
+ </c:if>
+
+
+ <span class="bmd-form-group">
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <span class="input-group-text">
+ <i class="material-icons">face</i>
+ </span>
+ </div>
+ <input type="text" class="form-control" name="username" placeholder="User Name">
+ </div>
+ </span>
+
+ <span class="bmd-form-group">
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <span class="input-group-text">
+ <i class="material-icons">lock_outline</i>
+ </span>
+ </div>
+ <input type="password" class="form-control" name="password" placeholder="Password">
+ </div>
+ </span>
+
+ <span class="bmd-form-group">
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <span class="input-group-text">
+ <i class="material-icons">shopping_bag</i>
+ </span>
+ </div>
+ <select name="role" class="selectpicker" data-size="7" id="format" data-style="btn btn-primary btn-round" title="Single Select">
+ <option value="admin" selected>admin</option>
+ <option value="user">user</option>
+
+ </select>
+ </div>
+ </span>
+
+ </div>
+ <div class="card-footer justify-content-center">
+ <input type="submit" class="btn btn-rose btn-link btn-lg" value="Submit" />
+ </div>
+ </div>
+ </form:form>
+ </div>
+ </div>
+ </div>
+ <footer class="footer">
+ <div class="container">
+ <nav class="float-left">
+ <ul>
+ <li>
+ <a href="https://www.creative-tim.com/">
+ Creative Tim
+ </a>
+ </li>
+ <li>
+ <a href="https://creative-tim.com/presentation">
+ About Us
+ </a>
+ </li>
+ <li>
+ <a href="http://blog.creative-tim.com/">
+ Blog
+ </a>
+ </li>
+ <li>
+ <a href="https://www.creative-tim.com/license">
+ Licenses
+ </a>
+ </li>
+ </ul>
+ </nav>
+ <div class="copyright float-right">
+ ©
+ <script>
+ document.write(new Date().getFullYear())
+ </script>, made with <i class="material-icons">favorite</i> by
+ <a href="https://www.creative-tim.com/" target="_blank">Creative Tim</a> for a better web.
+ </div>
+ </div>
+ </footer>
+ </div>
+ </div>
+ <!-- Core JS Files -->
+ <script src="assets/plugins/jquery/jquery.min.js"></script>
+ <!-- Bootstrap tether Core JavaScript -->
+ <script src="assets/plugins/bootstrap/js/popper.min.js"></script>
+ <script src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
+ <!-- slimscrollbar scrollbar JavaScript -->
+ <script src="assets/js/jquery.slimscroll.js"></script>
+ <!--Wave Effects -->
+ <script src="assets/js/waves.js"></script>
+ <!--Menu sidebar -->
+ <script src="assets/js/sidebarmenu.js"></script>
+ <!--stickey kit -->
+ <script src="assets/plugins/sticky-kit-master/dist/sticky-kit.min.js"></script>
+ <script src="assets/plugins/sparkline/jquery.sparkline.min.js"></script>
+ <!--Custom JavaScript -->
+ <script src="assets/js/custom.min.js"></script>
+ <!-- ============================================================== -->
+ <!-- Style switcher -->
+ <!-- ============================================================== -->
+ <script src="assets/plugins/styleswitcher/jQuery.style.switcher.js"></script>
+</body>
+
+
+<!-- Mirrored from demos.creative-tim.com/material-dashboard-pro/examples/pages/login.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 20 Apr 2019 08:06:56 GMT -->
+</html>
+
+
+
+