User sync fixes
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
15c39f93ca
commit
ba5a03c980
|
@ -99,7 +99,7 @@ module.exports = Self => {
|
||||||
try {
|
try {
|
||||||
await Self.doSync(sync, user);
|
await Self.doSync(sync, user);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(`Cannot sync user '${user}':`, err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await Self.syncDeinit(sync);
|
await Self.syncDeinit(sync);
|
||||||
|
|
|
@ -119,6 +119,10 @@ module.exports = Self => {
|
||||||
sambaClient
|
sambaClient
|
||||||
} = sync;
|
} = sync;
|
||||||
|
|
||||||
|
// Avoid to change adminitration users
|
||||||
|
if (['administrator', 'root'].indexOf(userName.toLowerCase()) >= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
let user = await $.Account.findOne({
|
let user = await $.Account.findOne({
|
||||||
where: {name: userName},
|
where: {name: userName},
|
||||||
fields: [
|
fields: [
|
||||||
|
@ -169,14 +173,19 @@ module.exports = Self => {
|
||||||
await $.Account.upsertWithWhere({id: user.id},
|
await $.Account.upsertWithWhere({id: user.id},
|
||||||
{bcryptPassword}
|
{bcryptPassword}
|
||||||
);
|
);
|
||||||
await $.user.upsert({
|
|
||||||
|
let appUser = {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
username: userName,
|
username: userName,
|
||||||
password: bcryptPassword,
|
|
||||||
email: user.email,
|
email: user.email,
|
||||||
created: user.created,
|
created: user.created,
|
||||||
updated: user.updated
|
updated: user.updated
|
||||||
});
|
};
|
||||||
|
|
||||||
|
if (bcryptPassword)
|
||||||
|
appUser.password = bcryptPassword;
|
||||||
|
|
||||||
|
await $.user.upsert(appUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SIP
|
// SIP
|
||||||
|
@ -240,7 +249,8 @@ module.exports = Self => {
|
||||||
if (hasAccount) {
|
if (hasAccount) {
|
||||||
// Recreates user
|
// Recreates user
|
||||||
|
|
||||||
let nameArgs = user.nickname.split(' ');
|
let nickname = user.nickname || userName;
|
||||||
|
let nameArgs = nickname.split(' ');
|
||||||
let sn = nameArgs.length > 1
|
let sn = nameArgs.length > 1
|
||||||
? nameArgs.splice(1).join(' ')
|
? nameArgs.splice(1).join(' ')
|
||||||
: '-';
|
: '-';
|
||||||
|
@ -253,8 +263,8 @@ module.exports = Self => {
|
||||||
'posixAccount',
|
'posixAccount',
|
||||||
'sambaSamAccount'
|
'sambaSamAccount'
|
||||||
],
|
],
|
||||||
cn: user.nickname || userName,
|
cn: nickname,
|
||||||
displayName: user.nickname,
|
displayName: nickname,
|
||||||
givenName: nameArgs[0],
|
givenName: nameArgs[0],
|
||||||
sn,
|
sn,
|
||||||
mail: extraParams.corporateMail,
|
mail: extraParams.corporateMail,
|
||||||
|
@ -266,7 +276,6 @@ module.exports = Self => {
|
||||||
sambaSID: '-'
|
sambaSID: '-'
|
||||||
};
|
};
|
||||||
|
|
||||||
let passwords;
|
|
||||||
if (password) {
|
if (password) {
|
||||||
let salt = crypto
|
let salt = crypto
|
||||||
.randomBytes(8)
|
.randomBytes(8)
|
||||||
|
@ -281,19 +290,21 @@ module.exports = Self => {
|
||||||
.from(digest + salt, 'binary')
|
.from(digest + salt, 'binary')
|
||||||
.toString('base64');
|
.toString('base64');
|
||||||
|
|
||||||
passwords = {
|
Object.assign(newEntry, {
|
||||||
userPassword: `{SSHA}${ssha}`,
|
userPassword: `{SSHA}${ssha}`,
|
||||||
sambaNTPassword: nthash(password)
|
sambaNTPassword: nthash(password)
|
||||||
};
|
});
|
||||||
} else if (oldUser) {
|
} else if (oldUser) {
|
||||||
passwords = {
|
Object.assign(newEntry, {
|
||||||
userPassword: oldUser.userPassword,
|
userPassword: oldUser.userPassword,
|
||||||
sambaNTPassword: oldUser.sambaNTPassword
|
sambaNTPassword: oldUser.sambaNTPassword
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (passwords)
|
for (let prop in newEntry) {
|
||||||
Object.assign(newEntry, passwords);
|
if (newEntry[prop] == null)
|
||||||
|
delete newEntry[prop];
|
||||||
|
}
|
||||||
|
|
||||||
await ldapClient.add(dn, newEntry);
|
await ldapClient.add(dn, newEntry);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue