diff options
Diffstat (limited to 'server/models/account/user.ts')
-rw-r--r-- | server/models/account/user.ts | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 026a8c9a0..653921907 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts | |||
@@ -4,7 +4,7 @@ import { | |||
4 | Scopes, Table, UpdatedAt | 4 | Scopes, Table, UpdatedAt |
5 | } from 'sequelize-typescript' | 5 | } from 'sequelize-typescript' |
6 | import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared' | 6 | import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared' |
7 | import { User } from '../../../shared/models/users' | 7 | import { User, UserRole } from '../../../shared/models/users' |
8 | import { | 8 | import { |
9 | isUserAutoPlayVideoValid, isUserDisplayNSFWValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid, | 9 | isUserAutoPlayVideoValid, isUserDisplayNSFWValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid, |
10 | isUserVideoQuotaValid | 10 | isUserVideoQuotaValid |
@@ -137,6 +137,27 @@ export class UserModel extends Model<UserModel> { | |||
137 | }) | 137 | }) |
138 | } | 138 | } |
139 | 139 | ||
140 | static listEmailsWithRight (right: UserRight) { | ||
141 | const roles = Object.keys(USER_ROLE_LABELS) | ||
142 | .map(k => parseInt(k, 10) as UserRole) | ||
143 | .filter(role => hasUserRight(role, right)) | ||
144 | |||
145 | console.log(roles) | ||
146 | |||
147 | const query = { | ||
148 | attribute: [ 'email' ], | ||
149 | where: { | ||
150 | role: { | ||
151 | [Sequelize.Op.in]: roles | ||
152 | } | ||
153 | } | ||
154 | } | ||
155 | |||
156 | return UserModel.unscoped() | ||
157 | .findAll(query) | ||
158 | .then(u => u.map(u => u.email)) | ||
159 | } | ||
160 | |||
140 | static loadById (id: number) { | 161 | static loadById (id: number) { |
141 | return UserModel.findById(id) | 162 | return UserModel.findById(id) |
142 | } | 163 | } |