1
0
mirror of https://github.com/bitwarden/server.git synced 2024-12-27 17:47:37 +01:00

api get generating organization license

This commit is contained in:
Kyle Spearrin 2017-08-14 22:16:30 -04:00
parent 63a82336c6
commit abf68c1cea
3 changed files with 30 additions and 4 deletions

View File

@ -24,6 +24,7 @@ namespace Bit.Api.Controllers
private readonly IOrganizationUserRepository _organizationUserRepository;
private readonly IOrganizationService _organizationService;
private readonly IUserService _userService;
private readonly ILicensingService _licensingService;
private readonly CurrentContext _currentContext;
private readonly GlobalSettings _globalSettings;
private readonly UserManager<User> _userManager;
@ -33,6 +34,7 @@ namespace Bit.Api.Controllers
IOrganizationUserRepository organizationUserRepository,
IOrganizationService organizationService,
IUserService userService,
ILicensingService licensingService,
CurrentContext currentContext,
GlobalSettings globalSettings,
UserManager<User> userManager)
@ -43,6 +45,7 @@ namespace Bit.Api.Controllers
_userService = userService;
_currentContext = currentContext;
_userManager = userManager;
_licensingService = licensingService;
_globalSettings = globalSettings;
}
@ -95,6 +98,24 @@ namespace Bit.Api.Controllers
}
}
[HttpGet("{id}/license")]
public async Task<OrganizationLicense> GetLicense(string id, [FromQuery]Guid installationId)
{
var orgIdGuid = new Guid(id);
if(!_currentContext.OrganizationOwner(orgIdGuid))
{
throw new NotFoundException();
}
var organization = await _organizationRepository.GetByIdAsync(orgIdGuid);
if(organization == null)
{
throw new NotFoundException();
}
return new OrganizationLicense(organization, installationId, _licensingService);
}
[HttpGet("")]
public async Task<ListResponseModel<OrganizationResponseModel>> GetUser()
{

View File

@ -55,7 +55,6 @@ namespace Bit.Core.Models.Api
Utilities.CoreHelpers.ReadableBytesSize(organization.Storage.Value) : null;
StorageGb = organization.Storage.HasValue ? Math.Round(organization.Storage.Value / 1073741824D) : 0; // 1 GB
MaxStorageGb = organization.MaxStorageGb;
// License = ...
Expiration = DateTime.UtcNow.AddYears(1);
}
@ -76,7 +75,6 @@ namespace Bit.Core.Models.Api
public BillingSubscription Subscription { get; set; }
public BillingInvoice UpcomingInvoice { get; set; }
public IEnumerable<BillingCharge> Charges { get; set; }
public OrganizationLicense License { get; set; }
public DateTime? Expiration { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using Bit.Core.Enums;
using Bit.Core.Models.Table;
using Bit.Core.Services;
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
@ -12,13 +13,15 @@ namespace Bit.Core.Models.Business
public OrganizationLicense()
{ }
public OrganizationLicense(Organization org, Guid installationId)
public OrganizationLicense(Organization org, Guid installationId, ILicensingService licenseService)
{
LicenseKey = "";
LicenseKey = org.LicenseKey;
InstallationId = installationId;
Id = org.Id;
Name = org.Name;
Enabled = org.Enabled;
Plan = org.Plan;
PlanType = org.PlanType;
Seats = org.Seats;
MaxCollections = org.MaxCollections;
UseGroups = org.UseGroups;
@ -27,6 +30,10 @@ namespace Bit.Core.Models.Business
MaxStorageGb = org.MaxStorageGb;
SelfHost = org.SelfHost;
Version = 1;
Issued = DateTime.UtcNow;
Expires = Issued.AddYears(1);
Trial = false;
Signature = Convert.ToBase64String(licenseService.SignLicense(this));
}
public string LicenseKey { get; set; }