]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ee/src/org/argeo/cms/websocket/javax/server/WebSocketView.java
1 package org
.argeo
.cms
.websocket
.javax
.server
;
3 import java
.security
.Principal
;
4 import java
.util
.HashSet
;
8 import javax
.security
.auth
.Subject
;
9 import javax
.security
.auth
.x500
.X500Principal
;
11 import org
.osgi
.service
.useradmin
.Role
;
14 * Abstraction of a single Frontend view, that is a web browser page. There can
15 * be multiple views within one single authenticated HTTP session.
17 public class WebSocketView
{
18 private final String uid
;
19 private Subject subject
;
21 public WebSocketView(Subject subject
) {
22 this.uid
= UUID
.randomUUID().toString();
23 this.subject
= subject
;
26 public String
getUid() {
30 public Set
<String
> getRoles() {
31 return roles(subject
);
34 public boolean isInRole(String role
) {
35 return getRoles().contains(role
);
38 public void checkRole(String role
) {
39 checkRole(subject
, role
);
42 public final static Set
<String
> roles(Subject subject
) {
43 Set
<String
> roles
= new HashSet
<String
>();
44 X500Principal principal
= subject
.getPrincipals(X500Principal
.class).iterator().next();
45 String username
= principal
.getName();
47 for (Principal group
: subject
.getPrincipals()) {
48 if (group
instanceof Role
)
49 roles
.add(group
.getName());
54 public static void checkRole(Subject subject
, String role
) {
55 Set
<String
> roles
= roles(subject
);
56 if (!roles
.contains(role
))
57 throw new IllegalStateException("User is not in role " + role
);