private bool TryGetManagePackageOwnerModel(string id, string username, out ManagePackageOwnerModel model) { if (string.IsNullOrEmpty(id)) { throw new ArgumentException(nameof(id)); } if (string.IsNullOrEmpty(username)) { throw new ArgumentException(nameof(username)); } var package = _packageService.FindPackageRegistrationById(id); if (package == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_PackageNotFound); return(false); } if (!package.IsOwner(HttpContext.User)) { model = new ManagePackageOwnerModel(Strings.AddOwner_NotPackageOwner); return(false); } var user = _userService.FindByUsername(username); if (user == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_OwnerNotFound); return(false); } if (!user.Confirmed) { model = new ManagePackageOwnerModel( string.Format(CultureInfo.CurrentCulture, Strings.AddOwner_OwnerNotConfirmed, username)); return(false); } var currentUser = _userService.FindByUsername(HttpContext.User.Identity.Name); if (currentUser == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_CurrentUserNotFound); return(false); } model = new ManagePackageOwnerModel(package, user, currentUser); return(true); }
private bool TryGetManagePackageOwnerModel(string id, string username, bool isAddOwner, out ManagePackageOwnerModel model) { if (string.IsNullOrEmpty(id)) { throw new ArgumentException(nameof(id)); } if (string.IsNullOrEmpty(username)) { throw new ArgumentException(nameof(username)); } var package = _packageService.FindPackageRegistrationById(id); if (package == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_PackageNotFound); return(false); } var currentUser = GetCurrentUser(); if (currentUser == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_CurrentUserNotFound); return(false); } if (ActionsRequiringPermissions.ManagePackageOwnership.CheckPermissionsOnBehalfOfAnyAccount(currentUser, package) != PermissionsCheckResult.Allowed) { model = new ManagePackageOwnerModel(Strings.AddOwner_NotPackageOwner); return(false); } var user = _userService.FindByUsername(username); if (user == null) { model = new ManagePackageOwnerModel(Strings.AddOwner_OwnerNotFound); return(false); } if (!user.Confirmed) { model = new ManagePackageOwnerModel( string.Format(CultureInfo.CurrentCulture, Strings.AddOwner_OwnerNotConfirmed, username)); return(false); } var isOwner = package.Owners.Any(o => o.MatchesUser(user)) || _packageOwnershipManagementService.GetPackageOwnershipRequests(package: package, newOwner: user).Any(); if (isAddOwner && isOwner) { model = new ManagePackageOwnerModel( string.Format(CultureInfo.CurrentCulture, Strings.AddOwner_AlreadyOwner, username)); return(false); } if (!isAddOwner && !isOwner) { model = new ManagePackageOwnerModel( string.Format(CultureInfo.CurrentCulture, Strings.RemoveOwner_NotOwner, username)); return(false); } model = new ManagePackageOwnerModel(package, user, currentUser); return(true); }