use of org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor in project openmeetings by apache.
the class WebSession method initDashboard.
private void initDashboard() {
DashboardContext dashboardContext = getDashboardContext();
dashboard = (UserDashboard) dashboardContext.getDashboardPersister().load();
boolean existMyRoomWidget = false, existRssWidget = false, existAdminWidget = false;
boolean showMyRoomConfValue = cfgDao.getBool(CONFIG_MYROOMS_ENABLED, true) && cfgDao.getBool(CONFIG_DASHBOARD_SHOW_MYROOMS, false);
boolean showRssConfValue = cfgDao.getBool(CONFIG_DASHBOARD_SHOW_RSS, false);
boolean showAdminWidget = getRights().contains(User.Right.Admin);
boolean save = false;
WidgetFactory widgetFactory = dashboardContext.getWidgetFactory();
if (dashboard == null) {
dashboard = new UserDashboard("default", "Default");
dashboard.addWidget(widgetFactory.createWidget(new WelcomeWidgetDescriptor()));
dashboard.addWidget(widgetFactory.createWidget(new StartWidgetDescriptor()));
if (showMyRoomConfValue) {
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
}
if (showRssConfValue) {
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
}
if (showAdminWidget) {
dashboard.addWidget(widgetFactory.createWidget(new AdminWidgetDescriptor()));
}
save = true;
} else {
for (Iterator<Widget> iter = dashboard.getWidgets().iterator(); iter.hasNext(); ) {
Widget w = iter.next();
// PrivateRoomWidget is stored in the profile of user. Now, Show_MyRooms_key is disable.
if (w.getClass().equals(MyRoomsWidget.class)) {
existMyRoomWidget = true;
if (!showMyRoomConfValue) {
iter.remove();
}
} else if (w.getClass().equals(RssWidget.class)) {
// RssWidget is stored in the profile of user. Now, Show_RSS_Key is disable.
existRssWidget = true;
if (!showRssConfValue) {
iter.remove();
}
} else if (w.getClass().equals(AdminWidget.class)) {
// AdminWidget is stored in the profile of user. check if user is admin.
existAdminWidget = true;
if (!showAdminWidget) {
iter.remove();
}
} else {
w.init();
}
}
// PrivateRoomWidget was deleted from profile and now it's enabled. It's added again to dashboard.
if (!existMyRoomWidget && showMyRoomConfValue && !dashboard.isWidgetMyRoomsDeleted()) {
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
save = true;
}
// RssWidget was deleted from profile and now it's enabled. It's added again to dashboard.
if (!existRssWidget && showRssConfValue && !dashboard.isWidgetRssDeleted()) {
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
save = true;
}
// user had no admin rights, now he/she has.
if (!existAdminWidget && showAdminWidget && !dashboard.isWidgetAdminDeleted()) {
dashboard.addWidget(widgetFactory.createWidget(new AdminWidgetDescriptor()));
save = true;
}
}
if (save) {
dashboardContext.getDashboardPersister().save(dashboard);
}
}
use of org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor in project openmeetings by apache.
the class Application method init.
@Override
protected void init() {
setWicketApplicationName(super.getName());
getSecuritySettings().setAuthenticationStrategy(new OmAuthenticationStrategy());
getApplicationSettings().setAccessDeniedPage(AccessDeniedPage.class);
getComponentInstantiationListeners().add(new SpringComponentInjector(this, ctx, true));
hazelcast.getCluster().getLocalMember().setStringAttribute(NAME_ATTR_KEY, hazelcast.getName());
hazelWsTopic = hazelcast.getTopic("default");
hazelWsTopic.addMessageListener(msg -> {
String serverId = msg.getPublishingMember().getStringAttribute(NAME_ATTR_KEY);
if (serverId.equals(hazelcast.getName())) {
return;
}
WbWebSocketHelper.send(msg.getMessageObject());
});
hazelcast.getCluster().addMembershipListener(new MembershipListener() {
@Override
public void memberRemoved(MembershipEvent evt) {
// server down, need to remove all online clients, process persistent addresses
String serverId = evt.getMember().getStringAttribute(NAME_ATTR_KEY);
cm.clean(serverId);
scm.clean(serverId);
updateJpaAddresses();
}
@Override
public void memberAttributeChanged(MemberAttributeEvent evt) {
// no-op
}
@Override
public void memberAdded(MembershipEvent evt) {
// server added, need to process persistent addresses
updateJpaAddresses();
// check for duplicate instance-names
Set<String> names = new HashSet<>();
for (Member m : evt.getMembers()) {
if (evt.getMember().getUuid().equals(m.getUuid())) {
continue;
}
String serverId = m.getStringAttribute(NAME_ATTR_KEY);
names.add(serverId);
}
String serverId = evt.getMember().getStringAttribute(NAME_ATTR_KEY);
if (names.contains(serverId)) {
log.warn("Duplicate cluster instance with name {} found {}", serverId, evt.getMember());
}
}
});
setPageManagerProvider(new DefaultPageManagerProvider(this) {
@Override
protected IDataStore newDataStore() {
return new HazelcastDataStore(hazelcast);
}
});
// Add custom resource loader at the beginning, so it will be checked first in the
// chain of Resource Loaders, if not found it will search in Wicket's internal
// Resource Loader for a the property key
getResourceSettings().getStringResourceLoaders().add(0, new LabelResourceLoader());
getJavaScriptLibrarySettings().setJQueryReference(getV3());
getRequestCycleListeners().add(new WebSocketAwareCsrfPreventionRequestCycleListener() {
@Override
public void onEndRequest(RequestCycle cycle) {
Response resp = cycle.getResponse();
if (resp instanceof WebResponse && !(resp instanceof WebSocketResponse)) {
WebResponse wresp = (WebResponse) resp;
wresp.setHeader("X-XSS-Protection", "1; mode=block");
wresp.setHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");
wresp.setHeader("X-Content-Type-Options", "nosniff");
wresp.setHeader("X-Frame-Options", xFrameOptions);
Url reqUrl = cycle.getRequest().getUrl();
wresp.setHeader("Content-Security-Policy", String.format("%s; connect-src 'self' %s;", contentSecurityPolicy, getWsUrl(reqUrl)));
}
}
});
super.init();
// register some widgets
dashboardContext = new DashboardContext();
dashboardContext.setDashboardPersister(new UserDashboardPersister());
WidgetRegistry widgetRegistry = dashboardContext.getWidgetRegistry();
widgetRegistry.registerWidget(new MyRoomsWidgetDescriptor());
widgetRegistry.registerWidget(new RecentRoomsWidgetDescriptor());
widgetRegistry.registerWidget(new WelcomeWidgetDescriptor());
widgetRegistry.registerWidget(new StartWidgetDescriptor());
widgetRegistry.registerWidget(new RssWidgetDescriptor());
widgetRegistry.registerWidget(new AdminWidgetDescriptor());
// add dashboard context injector
getComponentInstantiationListeners().add(new DashboardContextInjector(dashboardContext));
DashboardSettings dashboardSettings = DashboardSettings.get();
dashboardSettings.setIncludeJQueryUI(false);
getRootRequestMapperAsCompound().add(new NoVersionMapper(getHomePage()));
getRootRequestMapperAsCompound().add(new NoVersionMapper(NOTINIT_MAPPING, NotInitedPage.class));
getRootRequestMapperAsCompound().add(new NoVersionMapper(HASH_MAPPING, HashPage.class));
getRootRequestMapperAsCompound().add(new NoVersionMapper(SIGNIN_MAPPING, getSignInPageClass()));
getRootRequestMapperAsCompound().add(new NoVersionMapper("oauth/${oauthid}", getSignInPageClass()));
mountPage("install", InstallWizardPage.class);
mountPage("activate", ActivatePage.class);
mountPage("reset", ResetPage.class);
mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
// should be in sync with VideoPlayer
mountResource("/recordings/png/${id}", new PngRecordingResourceReference());
mountResource("/room/file/${id}", new RoomResourceReference());
mountResource("/room/preview/${id}", new RoomPreviewResourceReference());
mountResource("/profile/${id}", new ProfileImageResourceReference());
mountResource("/group/${id}", new GroupLogoResourceReference());
log.debug("Application::init");
try {
if (OmFileHelper.getOmHome() == null) {
OmFileHelper.setOmHome(new File(getServletContext().getRealPath("/")));
}
LabelDao.initLanguageMap();
log.debug("webAppPath : {}", OmFileHelper.getOmHome());
// Init all global config properties
cfgDao.reinit();
// Init properties
setXFrameOptions(cfgDao.getString(CONFIG_HEADER_XFRAME, HEADER_XFRAME_SAMEORIGIN));
setContentSecurityPolicy(cfgDao.getString(CONFIG_HEADER_CSP, HEADER_CSP_SELF));
updateJpaAddresses();
setExtProcessTtl(cfgDao.getInt(CONFIG_EXT_PROCESS_TTL, getExtProcessTtl()));
Version.logOMStarted();
// we are starting so all processing recordings are now errors
recordingDao.resetProcessingStatus();
setInitComplete(true);
} catch (Exception err) {
log.error("[appStart]", err);
}
}
Aggregations