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.


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: '', //clientId for your repository
  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 (

export const AuthProvider = ({ children }: PropsWithChildren<{}>) => {
  const history = useHistory()

  return (
    <AuthenticationProvider configuration={configuration} history={history}>

export const RepositoryProvider = ({ children }: PropsWithChildren<{}>) => {
  const { oidcUser } = useOidcAuthentication()

  if (!oidcUser) {
    return <LoginForm />

  return (
    <RepositoryContext.Provider value={new Repository({ repositoryUrl, token: oidcUser.access_token })}>

@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


  • 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