Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Codecrew
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
30
Merge Requests
2
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ce3eb353
authored
Dec 31, 2018
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rolemanagement
1 parent
5b6f2c04
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
213 additions
and
20 deletions
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/EventBeanLocal.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/RoleBeanLocal.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/RoleBean.java
code/moya-database/src/main/resources/META-INF/persistence.xml
code/moya-utils/src/main/java/fi/codecrew/moya/permissions/MoyaApplication.java
code/moya-web/WebContent/resources/cditools/role/edit.xhtml
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/organisation/OrganizerEventSelector.java
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/user/RoleView.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/EventBeanLocal.java
View file @
ce3eb35
...
...
@@ -71,4 +71,5 @@ public interface EventBeanLocal {
List
<
LanEvent
>
findFutureEvents
();
List
<
LanEvent
>
findAllEventsForOrganizer
(
EventOrganiser
organiser
);
}
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/RoleBeanLocal.java
View file @
ce3eb35
...
...
@@ -30,6 +30,7 @@ import javax.ejb.Local;
import
fi.codecrew.moya.enums.apps.IAppPermission
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.Role
;
import
fi.codecrew.moya.model.User
;
/**
*
...
...
@@ -57,6 +58,7 @@ public interface RoleBeanLocal {
public
List
<
Role
>
getRoles
(
EventUser
selectedUser
);
Role
addRole
(
EventUser
eventuser
,
Role
role
);
Role
removeRole
(
EventUser
user
,
Role
role
);
List
<
Role
>
listUserSelectableRoles
();
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/RoleBean.java
View file @
ce3eb35
...
...
@@ -35,6 +35,8 @@ import javax.ejb.LocalBean;
import
javax.ejb.SessionContext
;
import
javax.ejb.Stateless
;
import
fi.codecrew.moya.model.User
;
import
org.primefaces.model.DualListModel
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -195,11 +197,6 @@ public class RoleBean implements RoleBeanLocal {
return
role
;
}
private
void
checkRoleLdap
()
{
}
@Override
@RolesAllowed
(
UserPermission
.
S_WRITE_ROLES
)
public
Role
addRole
(
EventUser
eventuser
,
Role
role
)
...
...
@@ -219,6 +216,22 @@ public class RoleBean implements RoleBeanLocal {
@Override
@RolesAllowed
(
UserPermission
.
S_WRITE_ROLES
)
public
Role
removeRole
(
EventUser
eventuser
,
Role
role
)
{
eventuser
=
eventuserfacade
.
reload
(
eventuser
);
role
=
roleFacade
.
reload
(
role
);
if
(
eventuser
.
getRoles
().
contains
(
role
))
{
eventuser
.
getRoles
().
remove
(
role
);
}
if
(
role
.
getUsers
().
contains
(
eventuser
))
{
role
.
getUsers
().
remove
(
eventuser
);
}
cardTemplateBean
.
checkPrintedCard
(
eventuser
);
return
role
;
}
@Override
@RolesAllowed
(
UserPermission
.
S_WRITE_ROLES
)
public
void
saveRoles
(
EventUser
usr
,
List
<
Role
>
usersRoles
)
{
List
<
Role
>
allRoles
=
roleFacade
.
findAll
();
...
...
code/moya-database/src/main/resources/META-INF/persistence.xml
View file @
ce3eb35
<?xml version="1.0" encoding="UTF-8"?>
<persistence
version=
"2.1
"
xmlns=
"http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance
"
xsi:schemaLocation=
"http://xmlns.jcp.org/xml/ns/persistence http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1
.xsd"
>
<persistence
xmlns=
"http://xmlns.jcp.org/xml/ns/persistence
"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
version=
"2.2
"
xsi:schemaLocation=
"http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2
.xsd"
>
<persistence-unit
name=
"MoyaDb"
>
<jta-data-source>
jdbc/moyaDb
</jta-data-source>
<properties>
<property
name=
"eclipselink.cache.size.default"
value=
"16384"
/>
<property
name=
"eclipselink.logging.logger"
value=
"ServerLogger"
/>
<property
name=
"eclipselink.jdbc.uppercase-columns"
value=
"false"
/>
<property
name=
"eclipselink.target-database"
value=
"PostgreSQL"
/>
<property
name=
"eclipselink.create-ddl-jdbc-file-name"
value=
"moyaCreateDDL.sql"
/>
<property
name=
"eclipselink.drop-ddl-jdbc-file-name"
value=
"moyaDropDDL.sql"
/>
<property
name=
"eclipselink.target-server"
value=
"Glassfish"
/>
<property
name=
"eclipselink.cache.size.default"
value=
"16384"
/>
<property
name=
"eclipselink.logging.logger"
value=
"ServerLogger"
/>
<property
name=
"eclipselink.jdbc.uppercase-columns"
value=
"false"
/>
<property
name=
"eclipselink.target-database"
value=
"PostgreSQL"
/>
<property
name=
"eclipselink.create-ddl-jdbc-file-name"
value=
"moyaCreateDDL.sql"
/>
<property
name=
"eclipselink.drop-ddl-jdbc-file-name"
value=
"moyaDropDDL.sql"
/>
<property
name=
"eclipselink.target-server"
value=
"Glassfish"
/>
<property
name=
"eclipselink.session.customizer"
value=
"fi.codecrew.moya.database.eclipselink.MoyaSessionCustomizer"
/>
value=
"fi.codecrew.moya.database.eclipselink.MoyaSessionCustomizer"
/>
<property
name=
"eclipselink.ddl-generation"
value=
"create-tables"
/>
<!--property name="eclipselink.ddl-generation" value="create-tables"/-->
...
...
code/moya-utils/src/main/java/fi/codecrew/moya/permissions/MoyaApplication.java
0 → 100644
View file @
ce3eb35
package
fi
.
codecrew
.
moya
.
permissions
;
/**
* This is a list of distinct "applications" available in moya.
* All applications can be enabled or disabled in a moya instance.
* All applications have three possible permission types:
* - GUEST - Roles assigned to a guest of the event
* - ORGANIZER - Permissions assigned to a generic organizer, who will manage the event-time activities of the application
* - ADMIN - Administrator, who has all permissions for the activities on the application
* <p>
* All more distinct permissions assigned to an application should be managed by event or application specific properties.
*/
public
enum
MoyaApplication
{
/**
* - Guest have the permission to manage themselves
* - organizers have the permission to view all users
* - Admin has the rights to modify all users basic information
* <p>
* Note that nobody should have the right to reset a password or email
* because of security concerns. (except superadmin, maybe?)
*/
User
,
/**
* - User: View and reserve places from the map to themselves
* - Org: View all information about places, and assign people to places
* - Admin: Create and modify maps and layouts
*/
Map
,
/**
* - User: View and buy items in shop
* - Org: Sell products to others.
* - Admin: Create and modify products
*/
Shop
,
/**
* - User: No permissions
* - Org: View and give out vip list enries
* - Admin: Add vips
*/
Viplist
,
/**
* - Guest: Vote and submit entries to compos
* - Org: View compos and assist users in entry submissions
* - Admin: Create and manage categories, view results
*/
Compo
,
/**
* - User: View and enroll to lectures
* - Org: Enroll others to lectures and view all registrants
* - Admin: Create and modify lectures, remove enrollments
*/
Lecture
,
// Licence, This might not be relevant
/**
* - Guest: Answer the polls
* - Organizer: No special permissions
* - Admin: Create and manage polls, View results
*/
Poll
,
/**
* Most events have some content added on the pages
* - User: View content
* - Org: No special permissions
* - Admin: Manage and create content
*/
Content
,;
public
static
final
String
USER
=
"User"
;
public
static
final
String
ORGANIZER
=
"Organizer"
;
public
static
final
String
ADMIN
=
"Admin"
;
}
code/moya-web/WebContent/resources/cditools/role/edit.xhtml
View file @
ce3eb35
...
...
@@ -61,8 +61,26 @@
</p>
<p:fieldset
id=
"rolecopy"
legend=
"#{i18n['role.rolecopy']}"
collapsed=
"true"
toggleable=
"true"
>
<h:form>
<p:selectOneMenu
value=
"#{organizerEventSelector.selectedEvent}"
converter=
"#{lanEventConverter}"
>
<f:selectItem
itemLabel=
"----"
/>
<f:selectItems
value=
"#{organizerEventSelector.organizerEvents}"
var=
"event"
itemLabel=
"#{event.name}"
/>
</p:selectOneMenu>
<p:selectOneMenu
value=
"#{organizerEventSelector.selectedEvent}"
converter=
"#{lanEventConverter}"
>
<f:selectItem
itemLabel=
"----"
/>
<f:selectItems
value=
"#{organizerEventSelector.selectedEvent.roles}"
var=
"role"
itemLabel=
"#{role.name}"
/>
<p:ajax
event=
"change"
update=
"rolecopy"
/>
</p:selectOneMenu>
<p:pickList
value=
"#{roleView.transferList}"
converter=
"#{userConverter}"
var=
"user"
itemLabel=
"#{user.wholeName} / #{user.nick}"
>
<p:ajax
event=
"transfer"
listener=
"#{roleView.transferRole}"
update=
"@form userfield"
/>
</p:pickList>
</h:form>
</p:fieldset>
<p:fieldset
id=
"userfield"
legend=
"#{i18n['roleView.members']}"
toggleable=
"true"
collapsed=
"true"
>
<h:form
id=
"addmember"
>
...
...
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/organisation/OrganizerEventSelector.java
0 → 100644
View file @
ce3eb35
package
fi
.
codecrew
.
moya
.
web
.
cdiview
.
organisation
;
import
fi.codecrew.moya.beans.EventBeanLocal
;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.model.LanEvent
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.ConversationScoped
;
import
javax.inject.Named
;
import
java.io.Serializable
;
import
java.util.List
;
@Named
@ConversationScoped
public
class
OrganizerEventSelector
implements
Serializable
{
private
List
<
LanEvent
>
orgnizersEvents
;
private
LanEvent
selectedEvent
;
@EJB
private
EventBeanLocal
eventbean
;
@EJB
private
PermissionBeanLocal
permbean
;
public
List
<
LanEvent
>
getOrganizerEvents
()
{
if
(
orgnizersEvents
==
null
)
{
orgnizersEvents
=
eventbean
.
findAllEventsForOrganizer
(
permbean
.
getCurrentUser
().
getEvent
().
getOrganiser
());
}
return
orgnizersEvents
;
}
public
List
<
LanEvent
>
getOrgnizersEvents
()
{
return
orgnizersEvents
;
}
public
void
setOrgnizersEvents
(
List
<
LanEvent
>
orgnizersEvents
)
{
this
.
orgnizersEvents
=
orgnizersEvents
;
}
public
LanEvent
getSelectedEvent
()
{
return
selectedEvent
;
}
public
void
setSelectedEvent
(
LanEvent
selectedEvent
)
{
this
.
selectedEvent
=
selectedEvent
;
}
}
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/user/RoleView.java
View file @
ce3eb35
...
...
@@ -26,6 +26,8 @@ import javax.enterprise.context.ConversationScoped;
import
javax.inject.Named
;
import
fi.codecrew.moya.model.*
;
import
org.primefaces.event.TransferEvent
;
import
org.primefaces.model.DualListModel
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -48,6 +50,8 @@ public class RoleView extends GenericCDIView {
*/
private
static
final
long
serialVersionUID
=
-
5165373936500592099L
;
private
Role
sourceRole
;
private
Role
role
;
private
Integer
roleid
;
...
...
@@ -79,14 +83,12 @@ public class RoleView extends GenericCDIView {
}
}
public
void
addUser
()
{
public
void
addUser
()
{
role
=
rolebean
.
addRole
(
addableUser
,
role
);
addableUser
=
null
;
}
public
List
<
EventUser
>
searchUser
(
String
user
)
{
public
List
<
EventUser
>
searchUser
(
String
user
)
{
// By default this returns only 20 first results.
UserSearchQuery
usq
=
new
UserSearchQuery
();
usq
.
setSearch
(
user
);
...
...
@@ -160,6 +162,32 @@ public class RoleView extends GenericCDIView {
return
null
;
}
public
DualListModel
<
User
>
getTransferList
(){
DualListModel
<
User
>
ret
=
new
DualListModel
<>();
ret
.
setSource
(
sourceRole
.
getUsers
().
stream
().
map
(
u
->
u
.
getUser
()).
collect
(
Collectors
.
toList
()));
ret
.
setTarget
(
role
.
getUsers
().
stream
().
map
(
u
->
u
.
getUser
()).
sorted
(
Comparator
.
comparing
(
User:
:
getWholeName
)).
collect
(
Collectors
.
toList
()));
return
ret
;
}
public
void
transferRole
(
TransferEvent
event
)
{
StringBuilder
builder
=
new
StringBuilder
();
for
(
Object
item
:
event
.
getItems
())
{
User
transferredUser
=
(
User
)
item
;
logger
.
info
(
"Transferring user user"
,
transferredUser
);
if
(
transferredUser
==
null
)
{
continue
;
}
if
(
event
.
isAdd
())
{
role
=
rolebean
.
addRole
(
userbean
.
getEventUser
(
transferredUser
,
true
),
role
);
}
else
if
(
event
.
isRemove
())
{
role
=
rolebean
.
removeRole
(
userbean
.
getEventUser
(
transferredUser
,
false
),
role
);
}
}
}
public
String
savePermissions
()
{
if
(
isCanWriteRoles
())
{
ArrayList
<
IAppPermission
>
newPerms
=
new
ArrayList
<
IAppPermission
>();
...
...
@@ -222,4 +250,11 @@ public class RoleView extends GenericCDIView {
this
.
addableUser
=
addableUser
;
}
public
Role
getSourceRole
()
{
return
sourceRole
;
}
public
void
setSourceRole
(
Role
sourceRole
)
{
this
.
sourceRole
=
sourceRole
;
}
}
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