May 2020
Out with the old in with the new ⏩
Good bye @zoltanbedi, welcome new friend @taki9! In this release we did a bunch of breaking changes. We changed the authentication under sensenet to a new robust solution which is IdentityServer4. Because of this we are releasing a react component library for helping working with it. Check it out! We have also refactored our admin ui and example apps to use the new authentication method.
@sensenet/authentication-oidc-react@1.0.0 🆕
@sensenet/authentication-oidc-react is a react component library that uses React context api for authenticating with oidc client.
There are 2 components and 1 hook that you can use. AuthenticationProvider
, OidcSecure
, useOidcAuthentication
.
Example
import { AuthenticationProvider, useOidcAuthentication, UserManagerSettings } from '@sensenet/authentication-oidc-react'
import { Repository } from '@sensenet/client-core'
import { RepositoryContext } from '@sensenet/hooks-react'
import React, { PropsWithChildren } from 'react'
import { BrowserRouter, useHistory } from 'react-router-dom'
export const repositoryUrl = 'https://my-service.sensenet.com/'
export const configuration: UserManagerSettings = {
client_id: 'spa',
automaticSilentRenew: true,
redirect_uri: 'http://localhost:3000/authentication/callback',
response_type: 'code',
post_logout_redirect_uri: 'http://localhost:3000/',
scope: 'openid profile sensenet',
authority: 'https://is.my-service.sensenet.com/',
silent_redirect_uri: 'http://localhost:3000/authentication/silent_callback',
extraQueryParams: { snrepo: repositoryUrl },
}
export function AppProviders({ children }: PropsWithChildren<{}>) {
return (
<BrowserRouter>
<AuthProvider>
<RepositoryProvider>{children}</RepositoryProvider>
</AuthProvider>
</BrowserRouter>
)
}
export const AuthProvider = ({ children }: PropsWithChildren<{}>) => {
const history = useHistory()
return (
<AuthenticationProvider configuration={configuration} history={history}>
{children}
</AuthenticationProvider>
)
}
export const RepositoryProvider = ({ children }: PropsWithChildren<{}>) => {
const { oidcUser } = useOidcAuthentication()
if (!oidcUser) {
return <LoginForm />
}
return (
<RepositoryContext.Provider value={new Repository({ repositoryUrl, token: oidcUser.access_token })}>
{children}
</RepositoryContext.Provider>
)
}
@sensenet/client-core@3.0.0 👀
- Changed RepositoryConfiguration from class to interface for better typing experience. It is not tightly coupled with GenericContent now.
- ❗ sessionLifetime property is moved from repository configuration to JWTService
🆕 token can be passed to the repository configuration. This will be sent with all requests as an Authorization header.
Breaking change: Functions belonging to allowed child types moved from the repository object to
repository.allowedChildTypes
as:- add
- update
- remove
- get
- getImplicit
- getExplicit
- getFromCTD
- listEmpty
New methods available on the repository to manage document previews accessible by
repository.preview
object:- getPageCount
- getExistingImages
- available
- regenerate
- check
- getComments
- addComment
- deleteComment
New methods to get metadata and the value of a property of a content on the
repository
:- getMetadata
- getPropertyValue
Admin-ui@1.7.0
Route handling is reworked. From now on the app has user friendly URL paths.
Delete action added to the context menu for files. #633
Document viewer design improvements. #658
New delete, move and copy buttons added to the content list for batch operations. They're shown when multiple items are selected #631
Items on the content list are selected if left click on them once #637
Loader added to the copy and move dialogs during the actions are in progress. #639
Share, Restore and Preview actions are temporarily disabled until the related screens and logic are finished.
fix: Result from command palette's search dropdown and double-clicks on a folder in the result on the search page navigated the user to an empty page. The default value of a property had to be set. #646
fix: Content list table next to the loader was shown during data loading. #641
fix: date format was not consistent with the chosen language #659
You can find the release here