| 1234567891011121314151617181920212223242526272829303132 |
- const Settings = require('settings-sharelatex')
- const { URL } = require('url')
- function getSafeRedirectPath(value) {
- const baseURL = Settings.siteUrl // base URL is required to construct URL from path
- const url = new URL(value, baseURL)
- let safePath = `${url.pathname}${url.search}${url.hash}`.replace(/^\/+/, '/')
- if (safePath === '/') {
- safePath = undefined
- }
- return safePath
- }
- const UrlHelper = {
- getSafeRedirectPath,
- wrapUrlWithProxy(url) {
- // TODO: Consider what to do for Community and Enterprise edition?
- if (!Settings.apis.linkedUrlProxy.url) {
- throw new Error('no linked url proxy configured')
- }
- return `${Settings.apis.linkedUrlProxy.url}?url=${encodeURIComponent(url)}`
- },
- prependHttpIfNeeded(url) {
- if (!url.match('://')) {
- url = `http://${url}`
- }
- return url
- }
- }
- module.exports = UrlHelper
|