Skyve 6.0 released
Skyve 6 provides the ability to enable user self-registration via no-code configuration, internationalisation of common parts of the Admin module, cloud backups and made it easier to customise the logo, favicon and background image for Skyve applications.
Self-Registration
Skyve applications can now be configured to enable public user self-registration. To configure this, your application:
needs to have a “public” user created in the system, this is used for application permissions during the registration process. Create a user with a random strong password and the “Admin - Anonymous” role
needs to have Email configured, so that account activation emails can be sent, and users can reset their own passwords
needs to have a Self-Registration group created, this defines the default permissions new users get in the system after registration
must be a single-tenant application, i.e. a default customer is set in the application json file under
environment : customer
To enable self-registration:
from the Startup screen of your new application, or the Startup tab from Security Admin -> Configuration, tick “Allow User Self Registration”
configure your Mail Settings and make sure Test Mode and Test Mail Recipient are not set and click Save
from the General tab of Security Admin -> Configuration, select the “User Self Registration Group” and set the “Anonymous Public User” and click Save
If everything is set up correctly, your login page should now switch to email address as the username field, and show a link to Register below the login form.
Cloud Backups
An external backup class can now be specified in your application settings to define where Skyve application backups are read from and written to. An example implementation using Azure blog storage has been provided which requires a paid or trial Azure account and you to add your blob storage API keys.
Instructions for storing backups in Azure:
Note: this requires knowledge of the Microsoft Azure portal, how it charges and how to access its services. The following steps are just a rough overview of the process and not intended to be a detailed guide. You will be charged for data stored in Azure storage.
head to portal.azure.com and sign in or subscribe
go to Storage accounts and create a new blob storage account
after going through the wizard to create your blob storage, go to Settings -> Access keys for your storage account
copy the Connection string for key1
go to your application json file
create a new backup endpoint with the following keys:
backup: {
externalBackupClass: "org.skyve.impl.backup.AzureBlobStorageBackup",
connectionString: "<key1 connection string>",
containerName: "<storage account name>"
},
you will also need to update your project
pom.xml
with the following dependenies:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.8.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.3</version>
</dependency>
redeploy your application and it should begin to use your Azure blog storage account for reading and writing Skyve backups
remember to enable the “Scheduled Backup all data and content” job to have backups happen automatically every day
More Internationalisation
Skyve has had support for internationalisation in the platform for a long time, but this release applies internationalisation changes to the Contact, User, Configuration and Startup sections of the admin module. This prepares the admin module to be translated into other languages. Let us know if you would like to contribute some translations!
Easier Customisation
We’ve tried to reduce the number of places which need to be modified to fully customise your Skyve application to make it your own. You should now see deeper penetration of changes when customising:
your logo in your
customer.xml
webapp/pages/fragments
backgroundImage.html
,favicon.html
andlogo.html
webapp/WEB-INF/pages/includes/favicon.xhtml
Admin
Clean up admin module menu
Internationalisation of admin module
Remove admin DocumentName document and renamed DataMaintenanceModuleDocument to ModuleDocument and combined their use
Update StartupExtension to allow non-required properties to be nulled
Add new user self-registration property to the json configuration to allow this to be enabled/disabled via a Startup property instead of a database field so that the login page can show the registration link dynamically
Update
UtilImpl
to read the new self-registration propertyAdd new self-registration property to account block of json
update login.jsp to show the register button when enabled for single-tenant applications
remove no longer required Configuration from SelfRegistraion
update Startup view with new account section
update StartupExtension to load and save account settings
add activated field to User view when self-registration is enabled
Restored Configuration
PasswordComplexityModel
for backwards compatibility with Skyve backups made before Skyve 5.0, this will be removed again in a later releaseDeprecate
allowUserSelfRegistration
to allow backward compatibility for restore, this will be removed in a later releaseAdd ability to resend an activation email when a user attempts to register an account which already has been registered but has not been activated
Add ResendActivation action to resend the registration/activation email
Move registration email logic from ConfigurationExtension into SelfRegistrationExtension
Update GenerateTestDataJob to populate optional references when generating test data
Improve performance of User and System dashboard by limiting range of data to previous 14 days
Provide multicolour and non-sql dataset options for
ThemeCharter
Framework
Add
Decimal.approximately()
Update SkyveContextListener to set self-registration property on startup
Fix various i18n substitution mechanisms
Added
favicon.html
fragment to assist in updating an application favicon across common public pagesAdd java.time conversion methods for Skyve temporal types
Introduce Skyve expressions - see
BindTest.testExpressions()
for usageAdd new sendRegistrationEmail to WebUtil
Add new
resendRegistrationEmail.jsp
Cater for the ADM_SecurityUser.activated column when determining if a Skyve user is active
Added ability to specify an external backup class for handling backups in an alternative location to the filesystem. Added implementation that uses Azure blob storage
Use touch cookie to inform device type on the server
Add background image page fragment to common public pages to make it easier to customise the background image for your Skyve application
Update home.xhtml to show the application description from the pom
Move
org.skyve.impl.web.UserAgentType
toorg.skyve.web.UserAgentType
Replace UserAgentUtils lib with Browsecap lib
Propagate Skyve exceptions in Repository directly instead of wrapping
Add a Repository mode that checks for existence of java files and doesn't load java classes
Hide > 8 columns in default query and let the column title be set by the attribute name
Add BeanValidator.processMessageBindings(e, bindingPrefix)
Remove customer from
BindUtil.formatMessage()
PrimeFaces
Add favicon xhtml fragment to faces templates to make it easier to customise the favicon image for your Skyve application
Updated editorial theme to use Open Sans throughout instead of Roboto for some headings
Fix the
showMenu
false,showSwitchMode
false andshowLogout
true combo for Ecuador and Ultima PF themesDon't include switch mode on phone devices
Notes for Upgrading
To upgrade your Skyve project to this version, change the Skyve version in your pom.xml
to 6.0.0 and change your skyve-maven-plugin
version to 1.28.
The import for org.skyve.impl.web.UserAgentType
in router/DefaultUxUiSelector.java
needs to be changed to org.skyve.web.UserAgentType
.
Add the following section to the webResources
section of your pom.xml
:
<webResource>
<directory>src/main/webapp/desktop</directory>
<targetPath>desktop</targetPath>
<filtering>true</filtering>
<includes>
<include>home.xhtml</include>
</includes>
</webResource>
Add the following property to your application json file in the account section:
account: {
...,
// Enables new users to register for an account when true, requires email
allowUserSelfRegistration: false
}
See the complete upgrade instructions on GitHub.