Skip to content

Commit

Permalink
AXRepository - Gestione credenziali management
Browse files Browse the repository at this point in the history
  • Loading branch information
cattaneoinfoesse committed Jul 25, 2022
1 parent cfff5b3 commit d443d0c
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 23 deletions.
4 changes: 2 additions & 2 deletions ACUtils.AXRepository/ACUtils.AXRepository.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<Authors>Andrea Cattaneo</Authors>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<Version>1.0.0.140</Version>
<PackageVersion>1.0.0.140</PackageVersion>
<Version>1.0.0.141</Version>
<PackageVersion>1.0.0.141</PackageVersion>
<Description>Utility per gestione classi documentali Arxivar</Description>
<NeutralLanguage>it</NeutralLanguage>
<IncludeSymbols>true</IncludeSymbols>
Expand Down
56 changes: 43 additions & 13 deletions ACUtils.AXRepository/ArxivarRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
{

Expand Down Expand Up @@ -71,7 +73,7 @@ private WCFConnectorManager GetWcf()
private ArxivarNextManagement.Client.Configuration configurationManagement =>
new ArxivarNextManagement.Client.Configuration()
{
ApiKey = new Dictionary<string, string>() { { "Authorization", _token } },
ApiKey = new Dictionary<string, string>() { { "Authorization", _tokenManagement } },
ApiKeyPrefix = new Dictionary<string, string>() { { "Authorization", "Bearer" } },
BasePath = _managementUrl,
};
Expand Down Expand Up @@ -264,25 +266,48 @@ public ACUtils.AXRepository.ArxivarNext.Model.UserProfileDTO GetAddressBookEntry
#endregion

#region auth
private void Login()

private AuthenticationTokenDTO _login(List<string> 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<string> { "ArxManagement" };
var auth = _login(scopeList);
_tokenManagement = auth.AccessToken;
_refreshTokenManagement = auth.RefreshToken;
}
}



#endregion


Expand Down Expand Up @@ -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<int>("UTENTE");
var userId = result.GetValue<int>("UTENTE");
return userApi.UsersGet(userId);
}

Expand Down Expand Up @@ -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);

Expand All @@ -1222,6 +1248,9 @@ public bool UserCreate(
Type3 = 0,
}
);



if (groups != null)
{
var existingGroups = userApi.UsersGetGroups();
Expand Down Expand Up @@ -1275,21 +1304,22 @@ 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");
}
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;
Expand Down
27 changes: 19 additions & 8 deletions ACUtils.AXRepository/AxExt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<FieldBaseDTO> fields, string stateName)
Expand Down Expand Up @@ -210,7 +210,7 @@ public static void SetField(this List<FieldBaseDTO> fields, string name, object

public static MaskProfileSchemaDTO SetToField(this MaskProfileSchemaDTO self, UserProfileDTO value)
{
self.SetToField(value);
self.Fields.SetToField(value);
return self;
}

Expand All @@ -228,29 +228,40 @@ public static void SetToField(this List<FieldBaseDTO> 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<FieldBaseDTO> fields, UserProfileDTO value)
{
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<FieldBaseForSearchStringDto> fields, string name, object value, int operator_ = 3)
public static void Set(this List<FieldBaseForSearchStringDto> 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<FieldBaseForSearchIntDto> 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<FieldBaseForSearchDTO> fields, string name, object value, int operator_ = 3)
Expand Down

0 comments on commit d443d0c

Please sign in to comment.