@Transactional // @Secured("ROLE_USER") public void createTransaction(BankingTx tx) { // add due to no insert trigger in sql server if (SobaConfig.getDatabaseVendor().equalsIgnoreCase("SQLServer")) { // System.out.println ("database vendor is SQL Server"); double balance = accountManager.updateAccountBalance(tx.getAmount(), tx.getAccountId()); tx.setBalance(balance); } aclBankingTxDao.insert(tx); addPermission(tx, new PrincipalSid(getCustomerUsername(tx)), BasePermission.READ); addPermission(tx, new GrantedAuthoritySid("ROLE_REP"), BasePermission.ADMINISTRATION); addPermission(tx, new GrantedAuthoritySid("ROLE_REP"), BasePermission.DELETE); }
private String getCustomerUsername(BankingTx tx) { String username = ""; String authority = SecurityContextHolder.getContext().getAuthentication().getAuthorities().toString(); if (authority.contains("ROLE_CUST")) { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { username = ((UserDetails) principal).getUsername(); } else { username = principal.toString(); } } else { String accountId = tx.getAccountId(); String customerId = accountDao.getCustomerId(accountId); username = loginUserDao.getUsernameByCustomerId(customerId); } return username; }