setup database
for MySql connection:set plugins for MySql connection in the location grails-app\conf\BuildConfig.groovy as follows:
dependencies { runtime 'mysql:mysql-connector-java:5.1.29' }
delete existing script and add the following code in the location:grails-app\conf\DataSource.groovy as follows:
dataSource { pooled = true jmxExport = true driverClassName = "com.mysql.jdbc.Driver" dialect = "org.hibernate.dialect.MySQL5InnoDBDialect" username = "root" password = "" } hibernate { cache.use_second_level_cache = true cache.use_query_cache = false cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' // Hibernate 4 singleSession = true // configure OSIV singleSession mode flush.mode = 'manual' // OSIV session flush mode outside of transactional context } // environment specific settings environments { development { dataSource { dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', '' //url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE" url = "jdbc:mysql://localhost/grailstest" } } test { dataSource { dbCreate = "update" url = "jdbc:mysql://localhost/grailstest" } } production { dataSource { dbCreate = "update" url = "jdbc:mysql://localhost/grailstest" properties { // See http://grails.org/doc/latest/guide/conf.html#dataSource for documentation jmxEnabled = true initialSize = 5 maxActive = 50 minIdle = 5 maxIdle = 25 maxWait = 10000 maxAge = 10 * 60000 timeBetweenEvictionRunsMillis = 5000 minEvictableIdleTimeMillis = 60000 validationQuery = "SELECT 1" validationQueryTimeout = 3 validationInterval = 15000 testOnBorrow = true testWhileIdle = true testOnReturn = false jdbcInterceptors = "ConnectionState" defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED } } } }for Oracle connection:
add jdbc driver in the location:D:\grailsproject\erp\lib\ojdbc14.jar
delete existing script and add the following code in the location:grails-app\conf\DataSource.groovy as follows:
dataSource { pooled = true jmxExport = true driverClassName = "oracle.jdbc.OracleDriver" dialect = org.hibernate.dialect.Oracle10gDialect username = "METAL_HCM_FINAL2" password = "METAL_HCM_FINAL2" } hibernate { singleSession = true flush.mode = 'manual' cache.use_query_cache = false cache.use_second_level_cache = true jdbc.use_get_generated_keys = true cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' } environments { development { dataSource { dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate' url = "jdbc:oracle:thin:@UKMODAK-PC:1521:db11g" } } test { dataSource { dbCreate = "update" url = "jdbc:oracle:thin:@HOME-74496774C0:1521:ukmodak" } } production { dataSource { dbCreate = "update" url = "jdbc:oracle:thin:@HOME-74496774C0:1521:ukmodak" properties { jmxEnabled = true initialSize = 5 maxActive = 50 minIdle = 5 maxIdle = 25 maxWait = 10000 maxAge = 10 * 60000 timeBetweenEvictionRunsMillis = 5000 minEvictableIdleTimeMillis = 60000 validationQuery = "SELECT 1" validationQueryTimeout = 3 validationInterval = 15000 testOnBorrow = true testWhileIdle = true testOnReturn = false jdbcInterceptors = "ConnectionState" defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED } } } }
add a model in the following location:D:\grailsproject\uktest\grails-app\domain\com\menu\MnMenu.groovy
package com.menu class MnMenu { Long id String menuType String linkType String menuTitle Long parentId Integer isActive Integer sortingOrder String urlPath String userRole static constraints = { menuType nullable: false linkType nullable: false menuTitle nullable: false,unique: true parentId nullable: true isActive nullable: true sortingOrder nullable: true urlPath nullable: false userRole nullable: true } static mapping={ version false } }
run the following command:
D:\grailsproject\uktest > grails run-app
If mn_menu table create in the database then connection is ok.
Step-2add spring security core plugins in the location:grails-app\conf\BuildConfig.groovy as follows:
repositories { mavenRepo 'http://repo.spring.io/milestone' } plugins { compile ":spring-security-core:2.0.0" }
or D:\grailsproject\uktest >grails clean D:\grailsproject\uktest >grails install-plugin spring-security-coreStep-3
Now create packahe User UserRole Requestmap model with the folloowing command line
D:\grailsproject\uktest >grails s2-quickstart com.auth(package) AuthUser(model) AuthRole(model) Requestmap(model)
then this tree model will create
Step-4Now run the following command
D:\grailsproject\uktest >grails run-app
then the following tavle will create
Step-5For advance acl run the following command
D:\grailsproject\uktest >grails create-acl-domain
This command will create few other domain classes like AclClass, AclEntry, AclObjectIdentity and AclSid. For example, AclClass will be used to set permission for the particular domain class.
Step-6Go to location:grailstest\target\work\plugins\spring-security-core-2.0.0\grails-app\controllers\grails\plugin\springsecurity and copy login, logout controller and past in the location: controller/com.login and com.logout
change login and logout controller package as you assign
Go to location:grailstest\target\work\plugins\spring-security-core-2.0.0\grails-app\views\login and copy auth.gsp and deney.gsp and past in the location: view/login/
Step-7open project in intellij ide and setting assensial jdk library(grails lib),sdk(java lib) from project structute and run.
if run and if login page show then is ok Step-8open project in intellij ide and create controller, view of auth domain package respectively using intellij
Step-9open bootstrap.groovy from the location:grailstest\grails-app\conf\BootStrap.groovy and add the following code for create role, user, some common url permission
def init = { servletContext -> def currentDate = new Date() def roleAdmin = AuthRole.findByAuthority('ROLE_ADMIN') ?: new AuthRole(authority: 'ROLE_ADMIN').save(flush: true) def user = AuthUser.findByUsername('admin') ?: new AuthUser(username: 'admin', password: '123456', enabled: true, accountExpired: false, accountLocked: false, passwordExpired: false).save(flush: true) if (!user?.authorities?.contains(roleAdmin)) { AuthUserAuthRole.create(user, roleAdmin, true) // add some initial request map for (String url in [ '/index', '/home.gsp', '/**/favicon.ico', '/assets/**', '/**/js/**', '/**/css/**', '/**/images/**', '/login', '/login.*', '/login/*', '/logout', '/logout.*', '/logout/*']) { new Requestmap(url: url, configAttribute: 'permitAll').save(flush: true) } } new Requestmap(url: '/resources/**', configAttribute: 'permitAll').save(flush:true) new Requestmap(url: '/', configAttribute: 'permitAll').save(flush:true) new Requestmap(url: '/requestmap', configAttribute: 'ROLE_ADMIN').save(flush:true) new Requestmap(url: '/requestmap/*', configAttribute: 'ROLE_ADMIN').save(flush:true) }
to import package put cursor on domain and alt+enter, then package will import
again rerun project from intellij ide
then assign role, user and permission will create on the database
after running the project browse this url:http://localhost:8080/grailstest/login/auth, then login form will show
Step-10setup default page
Go to location:grailstest\grails-app\conf\UrlMapping.groovy and add the following code
static mappings = { "/$controller/$action?/$id?(.$format)?"{ constraints { // apply constraints here } } "/"(controller: "login", action: "auth") //"/"(view:"/index") "500"(view:'/error') }Step-11
setup login redirect page
Go to location:grailstest\grails-app\conf\spring\Resource.groovy and add the following code
import grails.plugin.springsecurity.SpringSecurityUtils beans = { authenticationSuccessHandler(com.auth.MyAuthSuccessHandlerController) { def conf = SpringSecurityUtils.securityConfig; requestCache = ref('requestCache'); defaultTargetUrl = conf.successHandler.defaultTargetUrl; alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault; targetUrlParameter = conf.successHandler.targetUrlParameter; useReferer = conf.successHandler.useReferer; redirectStrategy = ref('redirectStrategy'); adminUrl = "/requestmap/index"; applicantUrl = "/irAplcIndex/index"; employeeUrl = "/hrAdmin/index"; } }
Now go to location:com.auth.MyAuthSuccessHandlerController and add the following code
package com.auth import grails.plugin.springsecurity.SpringSecurityUtils import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; class MyAuthSuccessHandlerController extends SavedRequestAwareAuthenticationSuccessHandler { private String applicantUrl; private String adminUrl; private String employeeUrl; def index() { } @Override protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response) { boolean hasAdmin = SpringSecurityUtils.ifAnyGranted("ROLE_ADMIN"); boolean hasApplicant = SpringSecurityUtils.ifAllGranted("ROLE_APPLICANT"); boolean hasEmployee = SpringSecurityUtils.ifAllGranted("ROLE_EMPLOYEE"); if(hasAdmin){ return "/requestmap/index"; }else if(hasApplicant){ return "/irAplcIndex/index"; }else if(hasEmployee){ return "/hrAdmin/index"; }else{ return "/irHomeIndex/index"; } } public void setApplicantUrl(String applicantUrl){ this.applicantUrl = applicantUrl; } public void setAdminUrl(String adminUrl){ this.adminUrl = adminUrl; } public void setEmployeeUrl(String employeeUrl){ this.employeeUrl = employeeUrl; } }
rerun project and see default home page and admin login page
We can also use the following code in the location:config.groovy as follows:
grails.plugin.springsecurity.auth.loginFormUrl ='/webHome/index' grails.plugin.springsecurity.successHandler.alwaysUseDefault = true grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/webHome/index'
Total : 15147
Today :51
Today Visit Country :