Initial commit

This commit is contained in:
Luka Romih
2022-12-07 04:43:36 +01:00
commit 257f3c354f
496 changed files with 55373 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
const router = require('express-promise-router')()
const {
listComments,
createComment,
seedComments,
clearComments,
updateStatus
} = require('../../../controllers/api/v1/comments')
// List comments (one page).
router.get('/', listComments)
// TEMP - Seed comments.
router.get('/seed/:commentCount', seedComments)
// TEMP - Clear comments.
router.get('/clear', clearComments)
// All further routes are only available to authenticated users.
router.use((req, res, next) => {
if (req.isAuthenticated()) return next()
res.status(400).end()
})
// Create new comment.
router.post('/', createComment)
// Change comment's visibility status
router.post('/updateStatus', updateStatus)
module.exports = router
+77
View File
@@ -0,0 +1,77 @@
const router = require('express-promise-router')()
const {
assign,
listEntries,
listNewEntries,
createQuestion,
deleteQuestion,
updateDomain,
insertConsultantAndHisDomainsByUsername,
insertNonModerator,
deleteConsultantForEntry,
getSharedAuthors,
getSharedAuthorsBeforePublish,
removeConsultant,
reject,
sendToReview,
publish,
updateQuestion,
updateSharedAuthors
} = require('../../../controllers/api/v1/consultancy')
// All routes require an authenticated user.
router.use((req, res, next) => {
if (req.isAuthenticated()) return next()
res.status(400).send('Unauthenticated')
})
router.get('/entry', listEntries)
router.get('/new-entry', listNewEntries)
router.post('/entry', createQuestion)
router.put('/entry', updateQuestion)
// Authorize endpoints for portal admin below.
router.use((req, res, next) => {
if (req.user.hasRole('portal admin')) return next()
res.status(400).send('Unauthorized')
})
// router.use(checkUserAdminPrivilegeUltility)
router.post(
'/add-consultant-by-username',
insertConsultantAndHisDomainsByUsername
)
router.post('/add-non-moderator', insertNonModerator)
// Remove user from role "consultant"
// body params: id -> user's id
router.get('/get-shared-authors', getSharedAuthorsBeforePublish)
router.get('/get-shared-authors-publish', getSharedAuthors)
router.put('/update-consultant-domain', updateDomain)
router.put('/update-shared-authors', updateSharedAuthors)
router.put('/assign', assign)
router.put('/reject', reject)
router.put('/review', sendToReview)
router.put('/publish', publish)
router.delete('/delete-consultant', removeConsultant)
router.delete('/delete-consultant-author', deleteConsultantForEntry)
router.delete('/delete', deleteQuestion)
module.exports = router
+7
View File
@@ -0,0 +1,7 @@
const router = require('express-promise-router')()
const demoPaginacija = require('../../../controllers/api/v1/demo-paginacija')
// Tale endpoint vrača rezultate.
router.get('/list', demoPaginacija.list)
module.exports = router
+35
View File
@@ -0,0 +1,35 @@
const router = require('express-promise-router')()
const dictionaries = require('../../../controllers/api/v1/dictionaries')
// Update domain labels.
router.post('/update-domain-labels', dictionaries.updateDomainLabels)
// Update secondary domains
router.post('/renovateSecondaryDomains', dictionaries.renovateSecondaryDomains)
// Delete specific dictionary.
router.delete('/:dictionaryId', dictionaries.delete)
// Change page in pagination
router.get('/listAllDictionaries', dictionaries.listDictionaries)
// Change page in pagination
router.get('/:dictionaryId/listDomainLabels', dictionaries.listDomainLabels)
// Change page in pagination
router.get('/listSecondaryDomains', dictionaries.listSecondaryDomains)
// Delete all entries of specific dictionary.
router.delete('/:dictionaryId/entries/all', dictionaries.deleteAllEntries)
// Publish all entries of specific dictionary.
router.put('/:dictionaryId/entries/all/publish', dictionaries.publishAllEntries)
// Import term candidates from extraction.
router.post(
'/:id/import/extraction/:extractionId',
dictionaries.extractionImport
)
module.exports = router
+33
View File
@@ -0,0 +1,33 @@
// This page refers to dictionary entries, not consultancy or other entries
const router = require('express-promise-router')()
const {
getEntry,
updateEntry,
createEntry,
fetchEntries,
deleteEntry,
getEntryVersionSnapshot
} = require('../../../controllers/api/v1/dictionaries')
// TODO Add authorization.
// Render entry data for the selected entry
router.get('/', getEntry)
// Create entry
router.post('/create', createEntry)
// Update entry
router.post('/update', updateEntry)
// Get all entries
router.get('/fetch-terms', fetchEntries)
// Delete selected entry
router.delete('/delete-entry', deleteEntry)
// Get single entry version history snapshot.
router.get('/:entryId/version-snapshots/:version', getEntryVersionSnapshot)
module.exports = router
+54
View File
@@ -0,0 +1,54 @@
const router = require('express-promise-router')()
const extraction = require('../../../controllers/api/v1/extraction')
// TODO In final version test authentication and authorization.
// TODO Also try to lock file editing or other operations once extraction was started.
// Delete extraction.
router.delete('/:id', extraction.delete)
// List documents.
router.get('/:id/documents', extraction.docsList)
// Update documents.
router.put('/:id/documents', extraction.docsUpdate)
// Delete a specific document.
router.delete('/:id/documents/:filename', extraction.docDelete)
// List stop term files.
router.get('/:id/stop-terms', extraction.stopTermsList)
// Update stop term files.
router.put('/:id/stop-terms', extraction.stopTermsUpdate)
// Delete a specific stop term file.
router.delete('/:id/stop-terms/:filename', extraction.stopTermDelete)
// Save oss params.
router.post('/:id/oss-save-params', extraction.ossSaveParams)
// Execute search by oss params.
router.put('/:id/oss-search', extraction.ossSearch)
// Confirm oss params.
router.put('/:id/oss-confirm-params', extraction.ossConfirmParams)
// Begin extraction.
router.put('/:id/begin', extraction.begin)
// Duplicate extraction.
router.post('/:id/duplicate', extraction.duplicate)
// Export term candidates.
router.get('/:id/term-candidates-export', extraction.termCandidatesExport)
// List all finished extractions for current user.
// TODO Is this enpoint even necessarry?
router.get('/finished-for-user', extraction.listFinishedForUser)
// List term candidates for specific extraction.
router.get('/:id/term-candidates', extraction.listTermCandidates)
module.exports = router
+24
View File
@@ -0,0 +1,24 @@
const router = require('express-promise-router')()
const commentsRouter = require('./comments')
const systemRouter = require('./system')
const usersRouter = require('./users')
const entriesRouter = require('./entries')
const dictionariesRouter = require('./dictionaries')
const portalsRouter = require('./portals')
const searchRouter = require('./search')
const consultancyRouter = require('./consultancy')
const demoPaginacijaRouter = require('./demo-paginacija')
const extractionRouter = require('./extraction')
router.use('/comments', commentsRouter)
router.use('/system', systemRouter)
router.use('/users', usersRouter)
router.use('/entries', entriesRouter)
router.use('/dictionaries', dictionariesRouter)
router.use('/portals', portalsRouter)
router.use('/search', searchRouter)
router.use('/consultancy', consultancyRouter)
router.use('/demo-paginacija', demoPaginacijaRouter)
router.use('/extraction', extractionRouter)
module.exports = router
+34
View File
@@ -0,0 +1,34 @@
const router = require('express-promise-router')()
const {
create,
syncRemoteDictionaries,
fetchDictionary,
updatePortalStatus,
listSelectedLinkedDicts,
listAllLinkedDicts,
deleteLinkedDictionary
} = require('../../../controllers/api/v1/portals')
// Create new portal connection
router.post('/createPortal', create)
// Synchronize all dictionaries (without entries) for linked portal.
router.put('/:linkedPortalId/dictionaries', syncRemoteDictionaries)
// Delete linked portal.
router.delete('/:linkedPortalId/deleteLinkedDictionary', deleteLinkedDictionary)
// Fetch all dictionaries for selected portal
router.get('/getMyDictionaries', fetchDictionary)
// Update selected portal status (enable or disable)
router.post('/updatePortalStatus', updatePortalStatus)
// Fetch new page of dictionaries for pagination
router.get('/:portalId/listSelectedLinkedDicts', listSelectedLinkedDicts)
// Fetch new page of all linked dictionaries for pagination
router.get('/listAllLinkedDicts', listAllLinkedDicts)
module.exports = router
+20
View File
@@ -0,0 +1,20 @@
const router = require('express-promise-router')()
const search = require('../../../controllers/api/v1/search')
const user = require('../../../middleware/user')
// Return search results for main search.
router.get('/main', search.listMainEntries)
// TODO This route assumes existance of user. Make sure to pre check it.
// Return search results for editor search.
router.get(
'/editor/:dictionaryId',
user.isDictionaryEditor,
search.listEditorEntries
)
router.get('/dictionaries', search.listFilteredDictionaries)
router.get('/term-filters', search.showModalFilterResults)
module.exports = router
+23
View File
@@ -0,0 +1,23 @@
const router = require('express-promise-router')()
const system = require('../../../controllers/api/v1/system')
const {
listDictionaries,
syncDictionary
} = require('../../../controllers/api/v1/inter_instance_sync')
// Receive Content Security Policy violation reports.
router.post('/csp-reports', system.handleCspReports)
// Trigger synchronization with Eurotermbank.
router.get('/eurotermbank-sync-push', system.syncWithEurotermbank)
// List dictionaries (one page).
router.get('/inter-instance-sync/dictionaries', listDictionaries)
// List dictionary entries updated since....
router.get(
'/inter-instance-sync/dictionary/:dictionaryId/entries',
syncDictionary
)
module.exports = router
+19
View File
@@ -0,0 +1,19 @@
const router = require('express-promise-router')()
const user = require('../../../controllers/users')
const users = require('../../../controllers/api/v1/users')
// Validate and create a new user.
router.post('/register', user.register)
// Validate and log the user in.
router.post('/login', user.login)
router.get('/addUser', user.findByUsernameOrEmail)
router.get('/listAllUsers', users.listUsers)
router.post('/hitsPerPage', users.updateHitsPerPage)
router.post('/nameAndSurname', users.updateFristNameAndSurname)
module.exports = router