Updates

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