forked from eXpandFramework/eXpand
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Updater.cs
69 lines (57 loc) · 2.9 KB
/
Updater.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Security;
using DevExpress.ExpressApp.Xpo;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.Base.Security;
using DevExpress.Persistent.BaseImpl;
using FeatureCenter.Base;
using Xpand.ExpressApp.FilterDataStore.Providers;
namespace FeatureCenter.Module {
public class Updater : Xpand.Persistent.BaseImpl.Updater {
protected bool initializeSecurity;
public Updater(IObjectSpace objectSpace, Version currentDBVersion)
: base(objectSpace, currentDBVersion) {
}
public override object EnsureUserExists(string userName, string firstName, object customizableRole) {
var ensureUserExists = base.EnsureUserExists(userName, firstName, customizableRole);
if (!IsNewSecuritySystem) {
if (((IUser)ensureUserExists).UserName == Admin) {
((User)ensureUserExists).SetPassword("Admin");
ObjectSpace.CommitChanges();
UserFilterProvider.UpdaterUserKey = ((User)ensureUserExists).Oid;
}
} else {
if (((SecurityUser)ensureUserExists).UserName == Admin) {
((SecurityUser)ensureUserExists).SetPassword("Admin");
ObjectSpace.CommitChanges();
UserFilterProvider.UpdaterUserKey = ((SecurityUser)ensureUserExists).Oid;
}
}
return ensureUserExists;
}
public override void UpdateDatabaseAfterUpdateSchema() {
base.UpdateDatabaseAfterUpdateSchema();
InitializeSecurity();
new DummyDataBuilder((XPObjectSpace)ObjectSpace).CreateObjects();
var workflowServiceUser = ObjectSpace.FindObject(SecuritySystem.UserType, new BinaryOperator("UserName", "WorkflowService"));
if (workflowServiceUser == null) {
CriteriaOperator criteriaOperator = CriteriaOperator.Parse("Name=?", SecurityStrategy.AdministratorRoleName);
CreateworkflowServiceUser(ObjectSpace.FindObject<Role>(criteriaOperator));
ObjectSpace.CommitChanges();
var updaters = ReflectionHelper.FindTypeDescendants(XafTypesInfo.CastTypeToTypeInfo(typeof(FCUpdater)));
foreach (var findTypeDescendant in updaters) {
var updater = (FCUpdater)Activator.CreateInstance(findTypeDescendant.Type, ObjectSpace, CurrentDBVersion, this);
updater.UpdateDatabaseAfterUpdateSchema();
}
}
}
private void CreateworkflowServiceUser(Role role) {
var workflowServiceUser = ObjectSpace.CreateObject<User>();
workflowServiceUser.UserName = "WorkflowService";
workflowServiceUser.FirstName = "WorkflowService";
workflowServiceUser.Roles.Add(role);
}
}
}