Skip to content

Commit d7f8048

Browse files
committed
Fix user perm on new users
1 parent a9e4a08 commit d7f8048

4 files changed

Lines changed: 18 additions & 15 deletions

File tree

OpenFlow/src/LoginProvider.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,9 @@ export class LoginProvider {
409409
}
410410
_user.username = username;
411411
if (Util.IsNullEmpty(_user.name)) { done("Cannot add new user, name is empty, please add displayname to claims", null); return; }
412-
_user = await Config.db.InsertOne(_user, "users", 0, false, TokenUser.rootToken());
412+
// _user = await Config.db.InsertOne(_user, "users", 0, false, TokenUser.rootToken());
413+
var jwt: string = TokenUser.rootToken();
414+
_user = await User.ensureUser(jwt, _user.name, _user.username, null, null);
413415
}
414416
}
415417

@@ -440,10 +442,8 @@ export class LoginProvider {
440442
if (!Util.IsNullEmpty(profile.displayName)) { _user.name = profile.displayName; }
441443
_user.username = username;
442444
if (Util.IsNullEmpty(_user.name)) { done("Cannot add new user, name is empty.", null); return; }
443-
_user = await Config.db.InsertOne(_user, "users", 0, false, jwt);
444-
var users: Role = await Role.FindByNameOrId("users", jwt);
445-
users.AddMember(_user);
446-
await users.Save(jwt)
445+
var jwt: string = TokenUser.rootToken();
446+
_user = await User.ensureUser(jwt, _user.name, _user.username, null, null);
447447
}
448448
}
449449
if (Util.IsNullUndefinded(_user)) {

OpenFlow/src/Messages/Message.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -499,8 +499,8 @@ export class Message {
499499
tuser = new TokenUser(user);
500500
} else { // Autocreate user .... safe ?? we use this for autocreating nodered service accounts
501501
if (Config.auto_create_users == true) {
502-
user = new User(); user.name = tuser.name; user.username = tuser.username;
503-
await user.Save(TokenUser.rootToken());
502+
var jwt: string = TokenUser.rootToken();
503+
user = await User.ensureUser(jwt, tuser.name, tuser.username, null, msg.password);
504504
tuser = new TokenUser(user);
505505
} else {
506506
msg.error = "Unknown username or password";
@@ -599,12 +599,6 @@ export class Message {
599599
user = await User.ensureUser(jwt, msg.name, msg.username, null, msg.password);
600600
msg.user = new TokenUser(user);
601601

602-
user.addRight(WellknownIds.admins, "admins", [Rights.full_control]);
603-
user.removeRight(WellknownIds.admins, [Rights.delete]);
604-
user.addRight(user._id, user.name, [Rights.full_control]);
605-
user.removeRight(user._id, [Rights.delete]);
606-
await user.Save(jwt);
607-
608602
jwt = Crypt.createToken(msg.user, "5m");
609603
var name = user.username;
610604
name = name.split("@").join("").split(".").join("");

OpenFlow/src/User.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Base } from "./base";
1+
import { Base, WellknownIds, Rights } from "./base";
22
import { Rolemember, Role } from "./Role";
33
import { DatabaseConnection } from "./DatabaseConnection";
44
import { TokenUser } from "./TokenUser";
@@ -45,6 +45,15 @@ export class User extends Base {
4545
}
4646
user = await Config.db.InsertOne(user, "users", 0, false, jwt);
4747
user = User.assign(user);
48+
user.addRight(WellknownIds.admins, "admins", [Rights.full_control]);
49+
user.removeRight(WellknownIds.admins, [Rights.delete]);
50+
user.addRight(user._id, user.name, [Rights.full_control]);
51+
user.removeRight(user._id, [Rights.delete]);
52+
await user.Save(jwt);
53+
var users: Role = await Role.FindByNameOrId("users", jwt);
54+
users.AddMember(user);
55+
await users.Save(jwt)
56+
await user.DecorateWithRoles();
4857
return user;
4958
}
5059
public static async ensureRole(jwt: string, name: string, id: string): Promise<Role> {

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.322
1+
0.0.323

0 commit comments

Comments
 (0)