mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-12 13:13:45 +01:00
Introduce an environment variable to control user creation in OIDC authentication, closes #47
This commit is contained in:
@@ -53,7 +53,7 @@ const Features = {
|
|||||||
case 'registration-page':
|
case 'registration-page':
|
||||||
return (
|
return (
|
||||||
!Features.externalAuthenticationSystemUsed() ||
|
!Features.externalAuthenticationSystemUsed() ||
|
||||||
Boolean(Settings.overleaf)
|
Boolean(Settings.overleaf) || Settings.oidc?.disableJITAccountCreation
|
||||||
)
|
)
|
||||||
case 'registration':
|
case 'registration':
|
||||||
return Boolean(Settings.overleaf)
|
return Boolean(Settings.overleaf)
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ const OIDCAuthenticationController = {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (info.redir != null) {
|
if (info.redir != null) {
|
||||||
return res.json({ redir: info.redir })
|
await UserController.doLogout(req)
|
||||||
|
return res.redirect(info.redir)
|
||||||
} else {
|
} else {
|
||||||
res.status(info.status || 401)
|
res.status(info.status || 401)
|
||||||
delete info.status
|
delete info.status
|
||||||
@@ -95,20 +96,19 @@ const OIDCAuthenticationController = {
|
|||||||
info: {
|
info: {
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: error.message,
|
text: error.message,
|
||||||
status: 401,
|
status: 500,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (user) {
|
if (user) {
|
||||||
return { user, info: undefined }
|
return { user, info: undefined }
|
||||||
} else { // we cannot be here, something is terribly wrong
|
} else { // user account is not created
|
||||||
logger.debug({ email : profile.emails[0].value }, 'failed OIDC log in')
|
logger.debug({ email : profile.emails[0].value }, 'OIDC users JIT account creation is off')
|
||||||
return {
|
return {
|
||||||
user: false,
|
user: false,
|
||||||
info: {
|
info: {
|
||||||
type: 'error',
|
redir: '/register',
|
||||||
text: 'Unknown error',
|
status: 401,
|
||||||
status: 500,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ const OIDCAuthenticationManager = {
|
|||||||
// (Is it safe? Concider: If an account from the specified provider is already linked to this user, throw an error)
|
// (Is it safe? Concider: If an account from the specified provider is already linked to this user, throw an error)
|
||||||
user = await User.findOne({ 'email': email }).exec()
|
user = await User.findOne({ 'email': email }).exec()
|
||||||
if (!user) {
|
if (!user) {
|
||||||
|
if (Settings.oidc.disableJITAccountCreation) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
user = await UserCreator.promises.createNewUser(
|
user = await UserCreator.promises.createNewUser(
|
||||||
{
|
{
|
||||||
email: email,
|
email: email,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ const OIDCModuleManager = {
|
|||||||
attAdmin: process.env.OVERLEAF_OIDC_IS_ADMIN_FIELD,
|
attAdmin: process.env.OVERLEAF_OIDC_IS_ADMIN_FIELD,
|
||||||
valAdmin: process.env.OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE,
|
valAdmin: process.env.OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE,
|
||||||
updateUserDetailsOnLogin: boolFromEnv(process.env.OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN),
|
updateUserDetailsOnLogin: boolFromEnv(process.env.OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN),
|
||||||
|
disableJITAccountCreation: boolFromEnv(process.env.OVERLEAF_OIDC_DISABLE_JIT_ACCOUNT_CREATION),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
passportSetup(passport, callback) {
|
passportSetup(passport, callback) {
|
||||||
|
|||||||
Reference in New Issue
Block a user