X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=docs%2Fdeveloper-guide.rst;fp=docs%2Fdeveloper-guide.rst;h=459360eb3faf73fc6dcd2bd560470dd7ec509ac3;hb=448fac1c4e8444418f9674585ecf958bc6c98df5;hp=0000000000000000000000000000000000000000;hpb=09df6d1bb8687f6f7970efbcac9bd3dc7b9503bb;p=portal%2Fric-dashboard.git diff --git a/docs/developer-guide.rst b/docs/developer-guide.rst new file mode 100644 index 00000000..459360eb --- /dev/null +++ b/docs/developer-guide.rst @@ -0,0 +1,133 @@ +.. ===============LICENSE_START======================================================= +.. O-RAN SC CC-BY-4.0 +.. %% +.. Copyright (C) 2019 AT&T Intellectual Property and Nokia +.. %% +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. ===============LICENSE_END========================================================= + +RIC Dashboard Developer Guide +============================= + +This document provides a quickstart for developers of the O-RAN SC RIC Dashboard web application. + +Prerequisites +------------- + +1. Java development kit (JDK), version 11 or later +2. Maven dependency-management tool, version 3.4 or later + +Other tools including the Node Package Manager (npm) are fetched dynamically. + +Angular Front-End Application +----------------------------- + +The Angular 8 application files are in subdirectory ``webapp-frontend``. +Build the front-end application via ``mvn package``. For development and debugging, +build the application, then launch an ng development server using this command:: + + ./ng serve --proxy-config proxy.conf.json + +The app will automatically reload in the browser if you change any of the source files. +The ng server listens for requests at this URL: + + http://localhost:4200 + + +Spring-Boot Back-End Application +-------------------------------- + +A development (not production) server uses local configuration and serves mock data +that simulates the behavior of remote endpoints. The back-end server listens for +requests at this URL: + + http://localhost:8080 + +The directory ``src/test/resources`` contains usable versions of the required property +files. These steps are required to launch: + +1. Set an environment variable via JVM argument: ``-Dorg.oransc.ric.portal.dashboard=mock`` +2. Run the JUnit test case ``DashboardServerTest`` which is not exactly a "test" because it never finishes. + +Both steps can be done with this command-line invocation:: + + mvn -Dorg.oransc.ric.portal.dashboard=mock -Dtest=DashboardTestServer test + +Development user authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The development server requires basic HTTP user authentication for all requests. Like +the production server, it requires HTTP headers with authentication for Portal API +requests. The username and password are stored in constants in this Java class in +the ``src/test/java`` folder:: + + org.oransc.ric.portal.dashboard.config.WebSecurityMockConfiguration + +Like the production server, the development server also performs role-based +authentication on requests. The user name-role name associations are also defined +in the class shown above. + +Production user authentication +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The server uses the ONAP Portal's "EPSDK-FW" library to support a +single-sign-on (SSO) feature, which requires users to authenticate +at the ONAP Portal UI. + +The server authenticates requests using cookies that are set +by the ONAP Portal:: + + EPService + UserId + +The EPService value is not checked. The UserId value is decrypted +using a secret key shared with the ONAP Portal to yield a user ID. +That ID must match a user's loginId defined in the user manager. + +The regular server checks requests for the following granted +authorities (role names), as defined in the java class ``DashboardConstants``. +A standard user can invoke all "GET" methods but not make changes. +A system administrator can invoke all methods ("GET", "POST", "PUT", +"DELETE") to make arbitrary changes:: + + Standard_User + System_Administrator + +Use the following structure in a JSON file to publish a user for the +user manager:: + + [ + { + "orgId":null, + "managerId":null, + "firstName":"Demo", + "middleInitial":null, + "lastName":"User", + "phone":null, + "email":null, + "hrid":null, + "orgUserId":null, + "orgCode":null, + "orgManagerUserId":null, + "jobTitle":null, + "loginId":"demo", + "active":true, + "roles":[ + { + "id":null, + "name":"Standard_User", + "roleFunctions":null + } + ] + } + ]