Test with overriding through environment variables
This commit is contained in:
parent
8473b71451
commit
2e99d37646
3 changed files with 42 additions and 22 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -23,6 +23,7 @@ index_*.ts
|
||||||
.~lock.*
|
.~lock.*
|
||||||
*.doctest.ts
|
*.doctest.ts
|
||||||
service-worker.js
|
service-worker.js
|
||||||
|
.env
|
||||||
|
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
|
|
|
@ -3,7 +3,7 @@ import {osmAuth} from "osm-auth"
|
||||||
import { Store, Stores, UIEventSource } from "../UIEventSource"
|
import { Store, Stores, UIEventSource } from "../UIEventSource"
|
||||||
import { OsmPreferences } from "./OsmPreferences"
|
import { OsmPreferences } from "./OsmPreferences"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import {LocalStorageSource} from "../Web/LocalStorageSource";
|
import { LocalStorageSource } from "../Web/LocalStorageSource"
|
||||||
import * as config from "../../../package.json"
|
import * as config from "../../../package.json"
|
||||||
export default class UserDetails {
|
export default class UserDetails {
|
||||||
public loggedIn = false
|
public loggedIn = false
|
||||||
|
@ -34,7 +34,8 @@ export interface AuthConfig {
|
||||||
export type OsmServiceState = "online" | "readonly" | "offline" | "unknown" | "unreachable"
|
export type OsmServiceState = "online" | "readonly" | "offline" | "unknown" | "unreachable"
|
||||||
|
|
||||||
export class OsmConnection {
|
export class OsmConnection {
|
||||||
public static readonly oauth_configs: Record<string, AuthConfig> = config.config.oauth_credentials
|
public static readonly oauth_configs: Record<string, AuthConfig> =
|
||||||
|
config.config.oauth_credentials
|
||||||
public auth
|
public auth
|
||||||
public userDetails: UIEventSource<UserDetails>
|
public userDetails: UIEventSource<UserDetails>
|
||||||
public isLoggedIn: Store<boolean>
|
public isLoggedIn: Store<boolean>
|
||||||
|
@ -75,6 +76,19 @@ export class OsmConnection {
|
||||||
console.debug("Using backend", this._oauth_config.url)
|
console.debug("Using backend", this._oauth_config.url)
|
||||||
this._iframeMode = Utils.runningFromConsole ? false : window !== window.top
|
this._iframeMode = Utils.runningFromConsole ? false : window !== window.top
|
||||||
|
|
||||||
|
// Check if there are settings available in environment variables, and if so, use those
|
||||||
|
if (
|
||||||
|
import.meta.env.VITE_OSM_OAUTH_CLIENT_ID !== undefined &&
|
||||||
|
import.meta.env.VITE_OSM_OAUTH_SECRET !== undefined
|
||||||
|
) {
|
||||||
|
console.debug("Using environment variables for oauth config")
|
||||||
|
this._oauth_config = {
|
||||||
|
oauth_client_id: import.meta.env.VITE_OSM_OAUTH_CLIENT_ID,
|
||||||
|
oauth_secret: import.meta.env.VITE_OSM_OAUTH_SECRET,
|
||||||
|
url: "https://www.openstreetmap.org",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.userDetails = new UIEventSource<UserDetails>(
|
this.userDetails = new UIEventSource<UserDetails>(
|
||||||
new UserDetails(this._oauth_config.url),
|
new UserDetails(this._oauth_config.url),
|
||||||
"userDetails"
|
"userDetails"
|
||||||
|
@ -182,7 +196,9 @@ export class OsmConnection {
|
||||||
const self = this
|
const self = this
|
||||||
console.log("Trying to log in...")
|
console.log("Trying to log in...")
|
||||||
this.updateAuthObject()
|
this.updateAuthObject()
|
||||||
LocalStorageSource.Get("location_before_login").setData(Utils.runningFromConsole ? undefined : window.location.href)
|
LocalStorageSource.Get("location_before_login").setData(
|
||||||
|
Utils.runningFromConsole ? undefined : window.location.href
|
||||||
|
)
|
||||||
this.auth.xhr(
|
this.auth.xhr(
|
||||||
{
|
{
|
||||||
method: "GET",
|
method: "GET",
|
||||||
|
@ -195,7 +211,7 @@ export class OsmConnection {
|
||||||
if (err.status == 401) {
|
if (err.status == 401) {
|
||||||
console.log("Clearing tokens...")
|
console.log("Clearing tokens...")
|
||||||
// Not authorized - our token probably got revoked
|
// Not authorized - our token probably got revoked
|
||||||
self.auth.logout();
|
self.auth.logout()
|
||||||
self.LogOut()
|
self.LogOut()
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -478,7 +494,9 @@ export class OsmConnection {
|
||||||
client_id: this._oauth_config.oauth_client_id,
|
client_id: this._oauth_config.oauth_client_id,
|
||||||
url: this._oauth_config.url,
|
url: this._oauth_config.url,
|
||||||
scope: "read_prefs write_prefs write_api write_gpx write_notes",
|
scope: "read_prefs write_prefs write_api write_gpx write_notes",
|
||||||
redirect_uri: Utils.runningFromConsole ? "https://mapcomplete.org/land.html" : window.location.protocol + "//" + window.location.host + "/land.html",
|
redirect_uri: Utils.runningFromConsole
|
||||||
|
? "https://mapcomplete.org/land.html"
|
||||||
|
: window.location.protocol + "//" + window.location.host + "/land.html",
|
||||||
singlepage: !standalone,
|
singlepage: !standalone,
|
||||||
auto: true,
|
auto: true,
|
||||||
})
|
})
|
||||||
|
@ -487,13 +505,13 @@ export class OsmConnection {
|
||||||
/**
|
/**
|
||||||
* To be called by land.html
|
* To be called by land.html
|
||||||
*/
|
*/
|
||||||
public finishLogin(callback: ((previousURL: string) => void)) {
|
public finishLogin(callback: (previousURL: string) => void) {
|
||||||
this.auth.authenticate(function () {
|
this.auth.authenticate(function () {
|
||||||
// Fully authed at this point
|
// Fully authed at this point
|
||||||
console.log("Authentication successful!")
|
console.log("Authentication successful!")
|
||||||
const previousLocation = LocalStorageSource.Get("location_before_login")
|
const previousLocation = LocalStorageSource.Get("location_before_login")
|
||||||
callback(previousLocation.data)
|
callback(previousLocation.data)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private CheckForMessagesContinuously() {
|
private CheckForMessagesContinuously() {
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"skipLibCheck": true
|
"skipLibCheck": true,
|
||||||
|
"types": ["vite/client"]
|
||||||
},
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"esm": true,
|
"esm": true,
|
||||||
|
|
Loading…
Reference in a new issue