Skip to content
Scott Kirkland edited this page Feb 21, 2020 · 2 revisions

Welcome to the faculty-directory wiki!

Platform

ASP.NET Core 3.1 Web Application build with ReactJS SPA template. WebJobs built using .NET Standard Console Applications.

Authentication is done using OIDC against CAS with a simple middleware which causes everyone who visits to automatically authenticate. After authenticated, cookies will be sent along for any API or Controller request and authorization can then be done as usual. Note: Service Workers in ReactJS are OFF and must remain that way, otherwise they will intercept non-react requests.

The Database is built using EF Core Migrations.

Infrastructure

CI and deployment via Azure Pipelines. Web Application deployed to Azure with webjobs running under the same AppService. Database migration and webjob updates are done automatically via the CI process.

Dev environment database is running on Terry and is kept up to date with master.

App Structure

Import Faculty Job

Once a day the ImportFaculty job runs. This calls IAM and looks for anyone who is in one of our defined professor, leadership or emeriti job classifications. These results are merged into the People table.

Process Sources Job

Every hour, external scholarly sources are queried for a small number of People to pull publication, tag, and bio info. These results are placed in PeopleSources.

Main Application (ReactJS)

These People and PeopleSources are then viewed by admins in the application for a specific Site. For example, one site is CAES which corresponds to caes.ucdavis.edu. An admin will decide for each person if they should be allowed to sync, and if any of the automatically collected information should be manually changed. Once a field has been manually changed, it will no longer be updated automatically by webjobs. The decision and any overrides are recorded in a SitePerson entry which is then used to sync with their site.

Sync Sites Job

Every hour, a small number of people flagged sync by the application are pushed/updated into SiteFarm.

Configuration

SiteFarm configuration

In order to call the SiteFarm API, you need to do the following:

  1. Create an API user with the SiteManager role by going to People -> Add User
  2. Install the JSON:API SiteFarm extension and any dependencies it requires.

https://playground.sf.ucdavis.edu/ has already been configured for testing purposes and can also be used to view the entire SiteFarm API documentation]