js/preventing-unwanted-updates/authorization-status-update.js (25 lines of code) (raw):

var entities = require('@jetbrains/youtrack-scripting-api/entities'); var workflow = require('@jetbrains/youtrack-scripting-api/workflow'); exports.rule = entities.Issue.onChange({ title: 'Only Authorizers can update value for Authorization status field', guard: function(ctx) { return ctx.issue.fields.becomes(ctx.AuthStatus, ctx.AuthStatus.Authorized); }, action: function(ctx) { var authBy = ctx.issue.fields.AuthBy; workflow.check(authBy && authBy.login === ctx.currentUser.login, 'Only Authorizers can update this field!'); }, requirements: { AuthBy: { type: entities.User.fieldType, name: 'Authorizer' }, AuthStatus: { type: entities.EnumField.fieldType, name: 'Authorization status', Authorized: {} } } });