diff --git a/ACUtils.AXRepository/ACUtils.AXRepository.csproj b/ACUtils.AXRepository/ACUtils.AXRepository.csproj
index 9a71e8e..5c5931a 100644
--- a/ACUtils.AXRepository/ACUtils.AXRepository.csproj
+++ b/ACUtils.AXRepository/ACUtils.AXRepository.csproj
@@ -5,8 +5,8 @@
Andrea Cattaneo
true
false
- 1.0.0.140
- 1.0.0.140
+ 1.0.0.141
+ 1.0.0.141
Utility per gestione classi documentali Arxivar
it
true
diff --git a/ACUtils.AXRepository/ArxivarRepository.cs b/ACUtils.AXRepository/ArxivarRepository.cs
index f7c3693..4dfff97 100644
--- a/ACUtils.AXRepository/ArxivarRepository.cs
+++ b/ACUtils.AXRepository/ArxivarRepository.cs
@@ -32,8 +32,10 @@ public class ArxivarRepository
private long? _impersonateUserId;
private string _token;
- private string _refresh_token;
+ private string _refreshToken;
+ private string _tokenManagement;
+ private string _refreshTokenManagement;
private WCFConnectorManager GetWcf()
{
@@ -71,7 +73,7 @@ private WCFConnectorManager GetWcf()
private ArxivarNextManagement.Client.Configuration configurationManagement =>
new ArxivarNextManagement.Client.Configuration()
{
- ApiKey = new Dictionary() { { "Authorization", _token } },
+ ApiKey = new Dictionary() { { "Authorization", _tokenManagement } },
ApiKeyPrefix = new Dictionary() { { "Authorization", "Bearer" } },
BasePath = _managementUrl,
};
@@ -264,25 +266,48 @@ public ACUtils.AXRepository.ArxivarNext.Model.UserProfileDTO GetAddressBookEntry
#endregion
#region auth
- private void Login()
+
+ private AuthenticationTokenDTO _login(List scopeList = null)
{
- if (string.IsNullOrEmpty(_token)) // TODO: test se è necessario il refresh del token
- {
- var authApi = new ArxivarNext.Api.AuthenticationApi(_apiUrl);
- var auth = authApi.AuthenticationGetToken(
+ var authApi = new ArxivarNext.Api.AuthenticationApi(_apiUrl);
+ var auth = authApi.AuthenticationGetToken(
new AuthenticationTokenRequestDTO(
username: _username,
password: _password,
clientId: _appId,
clientSecret: _appSecret,
- impersonateUserId: _impersonateUserId.HasValue ? System.Convert.ToInt32(_impersonateUserId) : default(int?)
+ impersonateUserId: _impersonateUserId.HasValue ? System.Convert.ToInt32(_impersonateUserId) : default(int?),
+ scopeList: scopeList
)
);
+ return auth;
+ }
+
+
+ private void Login()
+ {
+ if (string.IsNullOrEmpty(_token)) // TODO: test se è necessario il refresh del token
+ {
+ var auth = _login();
_token = auth.AccessToken;
- _refresh_token = auth.RefreshToken;
+ _refreshToken = auth.RefreshToken;
+ }
+ }
+
+
+ private void LoginManagment()
+ {
+ if (string.IsNullOrEmpty(_tokenManagement))
+ {
+ var scopeList = new List { "ArxManagement" };
+ var auth = _login(scopeList);
+ _tokenManagement = auth.AccessToken;
+ _refreshTokenManagement = auth.RefreshToken;
}
}
+
+
#endregion
@@ -1166,7 +1191,7 @@ public UserInfoDTO UserGet(string aoo, string username)
throw new NotFoundException($"user '{aoo}\\{username}' not found");
}
var userApi = new ArxivarNext.Api.UsersApi(configuration);
- var userId = result.Columns.GetValue("UTENTE");
+ var userId = result.GetValue("UTENTE");
return userApi.UsersGet(userId);
}
@@ -1198,6 +1223,7 @@ public bool UserCreate(
{
this._logger?.Information($"Creazione utente {username}");
Login();
+ LoginManagment();
var userApi = new ArxivarNext.Api.UsersApi(configuration);
var usersManagementApi = new ArxivarNextManagement.Api.UsersManagementApi(configurationManagement);
@@ -1222,6 +1248,9 @@ public bool UserCreate(
Type3 = 0,
}
);
+
+
+
if (groups != null)
{
var existingGroups = userApi.UsersGetGroups();
@@ -1275,13 +1304,15 @@ public bool UserCreateIfNotExists(
public bool UserAddGroup(string aoo, string username, string groupName)
{
Login();
+ LoginManagment();
var usersManagementApi = new ArxivarNextManagement.Api.UsersManagementApi(configurationManagement);
var userApi = new ArxivarNext.Api.UsersApi(configuration);
var user = UserGet(aoo, username);
var existingGroups = userApi.UsersGetGroups();
- var group = existingGroups.FirstOrDefault(g =>
- g.Description.Equals(groupName, StringComparison.CurrentCultureIgnoreCase));
+ var group = existingGroups.FirstOrDefault(
+ g => g.Description.Equals(groupName, StringComparison.CurrentCultureIgnoreCase)
+ );
if (group == null)
{
throw new NotFoundException($"Arxivar group '{groupName}' not found");
@@ -1289,7 +1320,6 @@ public bool UserAddGroup(string aoo, string username, string groupName)
var userGroups = usersManagementApi.UsersManagementGetUserGroups(user.User);
if (!userGroups.Any(g => g.Description.Equals(groupName, StringComparison.CurrentCultureIgnoreCase)))
{
-
userGroups.Add(new UserSimpleDTO(user: group.Id, description: group.Description));
usersManagementApi.UsersManagementSetUserGroups(userId: user.User, groups: userGroups);
return true;
diff --git a/ACUtils.AXRepository/AxExt.cs b/ACUtils.AXRepository/AxExt.cs
index ffd0a82..a459390 100644
--- a/ACUtils.AXRepository/AxExt.cs
+++ b/ACUtils.AXRepository/AxExt.cs
@@ -12,12 +12,12 @@ public static class AxExt
public static EditProfileSchemaDTO SetState(this EditProfileSchemaDTO self, string stateName)
{
- self.SetState(stateName);
+ self.Fields.SetState(stateName);
return self;
}
public static MaskProfileSchemaDTO SetState(this MaskProfileSchemaDTO self, string stateName)
{
- self.SetState(stateName);
+ self.Fields.SetState(stateName);
return self;
}
public static void SetState(this List fields, string stateName)
@@ -210,7 +210,7 @@ public static void SetField(this List fields, string name, object
public static MaskProfileSchemaDTO SetToField(this MaskProfileSchemaDTO self, UserProfileDTO value)
{
- self.SetToField(value);
+ self.Fields.SetToField(value);
return self;
}
@@ -228,7 +228,7 @@ public static void SetToField(this List fields, UserProfileDTO val
public static MaskProfileSchemaDTO SetFromField(this MaskProfileSchemaDTO self, UserProfileDTO value)
{
- self.SetFromField(value);
+ self.Fields.SetFromField(value);
return self;
}
public static void SetFromField(this List fields, UserProfileDTO value)
@@ -236,21 +236,32 @@ public static void SetFromField(this List fields, UserProfileDTO v
fields.SetField("From", value);
}
- public static UserSearchDTO SetString(this UserSearchDTO self, string name, object value, int operator_ = 3)
+ public static UserSearchDTO SetString(this UserSearchDTO self, string name, string value, int operator_ = 3)
{
self.StringFields.Set(name: name, value: value, operator_: operator_);
return self;
}
- public static void Set(this List fields, string name, object value, int operator_ = 3)
+ public static void Set(this List fields, string name, string value, int operator_ = 3)
{
var field = fields.First(i => i.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase));
field.Operator = operator_;
- field.Valore1 = Convert.ToString(value);
+ field.Valore1 = value;
}
+ public static UserSearchDTO SetInt(this UserSearchDTO self, string name, int? value, int operator_ = 3)
+ {
+ self.IntFields.Set(name: name, value: value, operator_: operator_);
+ return self;
+ }
+ public static void Set(this List fields, string name, int? value, int operator_ = 3)
+ {
+ var field = fields.First(i => i.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase));
+ field.Operator = operator_;
+ field.Valore1 = value;
+ }
public static SearchDTO Set(this SearchDTO self, string name, object value, int operator_ = 3)
{
- self.Set(name: name, value: value, operator_: operator_);
+ self.Fields.Set(name: name, value: value, operator_: operator_);
return self;
}
public static void Set(this List fields, string name, object value, int operator_ = 3)