Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Linnea Samila
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b80955bc
authored
Apr 18, 2010
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Access control fixing to work with JAAS
1 parent
95fda792
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
37 additions
and
25 deletions
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/SessionHandlerBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/AccessRightFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/IntegerPkGenericFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/RoleFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/SessionHandlerBeanLocal.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/SessionHandlerBean.java
View file @
b80955b
...
@@ -29,7 +29,7 @@ import fi.insomnia.bortal.model.User;
...
@@ -29,7 +29,7 @@ import fi.insomnia.bortal.model.User;
*/
*/
@Stateless
@Stateless
@DeclareRoles
(
"admin"
)
@DeclareRoles
(
"admin"
)
public
class
SessionHandlerBean
implements
SessionHandlerBeanLocal
,
SessionHandlerBeanRemote
{
public
class
SessionHandlerBean
implements
SessionHandlerBeanLocal
,
SessionHandlerBeanRemote
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SessionHandlerBean
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SessionHandlerBean
.
class
);
@EJB
@EJB
...
@@ -39,8 +39,10 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
...
@@ -39,8 +39,10 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
@EJB
@EJB
private
RoleFacade
roleFacade
;
private
RoleFacade
roleFacade
;
@Resource
@Resource
SessionContext
context
;
private
SessionContext
context
;
@EJB
private
UserBean
userbean
;
/**
/**
* Default constructor.
* Default constructor.
...
@@ -52,17 +54,20 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
...
@@ -52,17 +54,20 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
@Override
@Override
public
boolean
hasPermission
(
String
target
,
User
user
,
RolePermission
permission
)
{
public
boolean
hasPermission
(
String
target
,
User
user
,
RolePermission
permission
)
{
if
(
user
==
null
)
{
return
false
;
}
AccessRight
expectedRight
=
accessRightFacade
.
findOrCreateByName
(
target
);
AccessRight
expectedRight
=
accessRightFacade
.
findOrCreateByName
(
target
);
User
dbusr
=
userfacade
.
find
(
user
.
getId
());
User
dbusr
=
userfacade
.
find
(
user
.
getId
());
if
(
dbusr
!=
null
)
{
Set
<
Role
>
checkedRoles
=
new
HashSet
<
Role
>();
Set
<
Role
>
checkedRoles
=
new
HashSet
<
Role
>();
for
(
Role
r
:
dbusr
.
getRoles
())
{
for
(
Role
r
:
dbusr
.
getRoles
())
{
if
(
getRights
(
r
,
expectedRight
,
permission
,
checkedRoles
))
{
if
(
getRights
(
r
,
expectedRight
,
permission
,
checkedRoles
))
{
return
true
;
return
true
;
}
}
}
}
}
return
false
;
return
false
;
}
}
...
@@ -129,17 +134,9 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
...
@@ -129,17 +134,9 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
return
defaultUser
;
return
defaultUser
;
}
}
public
void
testing
()
{
Principal
principal
=
context
.
getCallerPrincipal
();
logger
.
warn
(
"principal {}"
,
principal
.
getName
());
logger
.
warn
(
"Principal in admin: {}"
,
context
.
isCallerInRole
(
"admin"
));
}
@Override
@Override
public
boolean
authenticate
(
String
username
,
String
password
)
{
public
boolean
authenticate
(
String
username
,
String
password
)
{
return
(
tryLogin
(
username
,
password
)
!=
null
);
return
(
tryLogin
(
username
,
password
)
!=
null
);
}
}
@Override
@Override
...
@@ -151,7 +148,12 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
...
@@ -151,7 +148,12 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
@Override
@Override
public
User
getCurrentUser
()
{
public
User
getCurrentUser
()
{
// TODO Auto-generated method stub
Principal
principal
=
context
.
getCallerPrincipal
();
return
null
;
User
ret
=
userbean
.
getUser
(
principal
.
getName
());
if
(
ret
==
null
)
{
ret
=
getDefaultUser
();
}
return
ret
;
}
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/AccessRightFacade.java
View file @
b80955b
...
@@ -26,9 +26,10 @@ public class AccessRightFacade extends IntegerPkGenericFacade<AccessRight> {
...
@@ -26,9 +26,10 @@ public class AccessRightFacade extends IntegerPkGenericFacade<AccessRight> {
public
AccessRight
findOrCreateByName
(
String
target
)
{
public
AccessRight
findOrCreateByName
(
String
target
)
{
// Fetch access right by name
// Fetch access right by name
TypedQuery
<
AccessRight
>
q
=
em
.
create
NamedQuery
(
"AccessRight.findByN
ame"
,
AccessRight
.
class
);
TypedQuery
<
AccessRight
>
q
=
em
.
create
Query
(
"SELECT a FROM AccessRight a WHERE a.name = :n
ame"
,
AccessRight
.
class
);
q
.
setParameter
(
"name"
,
target
);
q
.
setParameter
(
"name"
,
target
);
AccessRight
right
=
q
.
getSingleResult
();
AccessRight
right
=
null
;
right
=
this
.
getSingleNullableResult
(
q
);
// Might not exist yet -> create
// Might not exist yet -> create
if
(
right
==
null
)
{
if
(
right
==
null
)
{
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
View file @
b80955b
...
@@ -3,6 +3,7 @@ package fi.insomnia.bortal.facade;
...
@@ -3,6 +3,7 @@ package fi.insomnia.bortal.facade;
import
java.util.List
;
import
java.util.List
;
import
javax.persistence.EntityManager
;
import
javax.persistence.EntityManager
;
import
javax.persistence.NoResultException
;
import
javax.persistence.TypedQuery
;
import
javax.persistence.TypedQuery
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Root
;
import
javax.persistence.criteria.Root
;
...
@@ -67,4 +68,14 @@ public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements
...
@@ -67,4 +68,14 @@ public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements
return
q
.
getSingleResult
();
return
q
.
getSingleResult
();
}
}
protected
T
getSingleNullableResult
(
TypedQuery
<
T
>
q
)
{
T
ret
=
null
;
try
{
ret
=
q
.
getSingleResult
();
}
catch
(
NoResultException
e
)
{
ret
=
null
;
}
return
ret
;
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/IntegerPkGenericFacade.java
View file @
b80955b
...
@@ -5,7 +5,7 @@ import fi.insomnia.bortal.model.ModelInterface;
...
@@ -5,7 +5,7 @@ import fi.insomnia.bortal.model.ModelInterface;
/**
/**
* Session Bean implementation class GenericFacade
* Session Bean implementation class GenericFacade
*/
*/
public
abstract
class
IntegerPkGenericFacade
<
T
extends
ModelInterface
<
Integer
>>
extends
GenericFacade
<
Integer
,
T
>
{
public
abstract
class
IntegerPkGenericFacade
<
T
extends
ModelInterface
<
Integer
>>
extends
GenericFacade
<
Integer
,
T
>
{
public
IntegerPkGenericFacade
(
Class
<
T
>
entityClass
)
{
public
IntegerPkGenericFacade
(
Class
<
T
>
entityClass
)
{
super
(
entityClass
);
super
(
entityClass
);
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/RoleFacade.java
View file @
b80955b
...
@@ -25,9 +25,9 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
...
@@ -25,9 +25,9 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
}
}
public
Role
findByName
(
String
name
)
{
public
Role
findByName
(
String
name
)
{
TypedQuery
<
Role
>
q
=
em
.
createNamedQuery
(
"
User.findBy
Name"
,
Role
.
class
);
TypedQuery
<
Role
>
q
=
em
.
createNamedQuery
(
"
Role.findByRole
Name"
,
Role
.
class
);
q
.
setParameter
(
"name"
,
name
);
q
.
setParameter
(
"name"
,
name
);
return
q
.
getSingleResult
(
);
return
this
.
getSingleNullableResult
(
q
);
}
}
public
Role
getOrCreatePublicRole
()
{
public
Role
getOrCreatePublicRole
()
{
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
View file @
b80955b
...
@@ -12,7 +12,7 @@ import fi.insomnia.bortal.model.User;
...
@@ -12,7 +12,7 @@ import fi.insomnia.bortal.model.User;
@LocalBean
@LocalBean
public
class
UserFacade
extends
IntegerPkGenericFacade
<
User
>
{
public
class
UserFacade
extends
IntegerPkGenericFacade
<
User
>
{
public
static
final
String
DEFAULT_USER_LOGIN
=
"
default
"
;
public
static
final
String
DEFAULT_USER_LOGIN
=
"
ANONYMOUS
"
;
@PersistenceContext
@PersistenceContext
private
EntityManager
em
;
private
EntityManager
em
;
...
@@ -32,9 +32,10 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
...
@@ -32,9 +32,10 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
// return q.getSingleResult();
// return q.getSingleResult();
TypedQuery
<
User
>
q
=
em
.
createQuery
(
"SELECT u FROM User u WHERE u.login = :login"
,
User
.
class
);
TypedQuery
<
User
>
q
=
em
.
createQuery
(
"SELECT u FROM User u WHERE u.login = :login"
,
User
.
class
);
q
.
setParameter
(
"login"
,
login
);
q
.
setParameter
(
"login"
,
login
);
return
(
User
)
q
.
getSingleResult
(
);
return
getSingleNullableResult
(
q
);
}
}
public
User
getOrCreateDefaultUser
()
{
public
User
getOrCreateDefaultUser
()
{
User
defaultUser
=
findByLogin
(
DEFAULT_USER_LOGIN
);
User
defaultUser
=
findByLogin
(
DEFAULT_USER_LOGIN
);
...
...
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/SessionHandlerBeanLocal.java
View file @
b80955b
...
@@ -9,10 +9,7 @@ public interface SessionHandlerBeanLocal {
...
@@ -9,10 +9,7 @@ public interface SessionHandlerBeanLocal {
boolean
hasPermission
(
String
target
,
User
user
,
RolePermission
permission
);
boolean
hasPermission
(
String
target
,
User
user
,
RolePermission
permission
);
User
getDefaultUser
();
User
getDefaultUser
();
void
testing
();
User
getCurrentUser
();
User
getCurrentUser
();
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment