mirror of https://github.com/abpframework/abp
parent
f3d06500f1
commit
745d891134
@ -0,0 +1,2 @@
|
||||
# abp-tenantmanagement
|
||||
Tenant management module for ABP framework.
|
||||
@ -0,0 +1,16 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Version>0.3.0</Version>
|
||||
<NoWarn>$(NoWarn);CS1591</NoWarn>
|
||||
<PackageIconUrl>http://www.aspnetboilerplate.com/images/abp_nupkg.png</PackageIconUrl>
|
||||
<PackageProjectUrl>http://abp.io</PackageProjectUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/volosoft/abp/</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.1" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,26 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.Application.Contracts</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.Application.Contracts</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Domain.Shared\Volo.Abp.TenantManagement.Domain.Shared.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.Ddd.Application\Volo.Abp.Ddd.Application.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Volo\Abp\TenantManagement\Localization\ApplicationContracts\*.json" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,9 @@
|
||||
{
|
||||
"culture": "en",
|
||||
"texts": {
|
||||
"Permission:TenantManagement": "Tenant management",
|
||||
"Permission:Create": "Create",
|
||||
"Permission:Edit": "Edit",
|
||||
"Permission:Delete": "Delete"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.Application</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.Application</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Application.Contracts\Volo.Abp.TenantManagement.Application.Contracts.csproj" />
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Domain\Volo.Abp.TenantManagement.Domain.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.UI\Volo.Abp.UI.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.Domain.Shared</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.Domain.Shared</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.Localization\Volo.Abp.Localization.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,2 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp71</s:String></wpf:ResourceDictionary>
|
||||
@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using JetBrains.Annotations;
|
||||
using Volo.Abp.Data;
|
||||
using Volo.Abp.Domain.Entities;
|
||||
|
||||
namespace Volo.Abp.TenantManagement
|
||||
{
|
||||
public class Tenant : AggregateRoot<Guid>, IHasExtraProperties
|
||||
{
|
||||
public virtual string Name { get; protected set; }
|
||||
|
||||
public virtual List<TenantConnectionString> ConnectionStrings { get; protected set; }
|
||||
|
||||
public Dictionary<string, object> ExtraProperties { get; }
|
||||
|
||||
protected Tenant()
|
||||
{
|
||||
ExtraProperties = new Dictionary<string, object>();
|
||||
}
|
||||
|
||||
protected internal Tenant(Guid id, [NotNull] string name)
|
||||
{
|
||||
Check.NotNull(name, nameof(name));
|
||||
|
||||
Id = id;
|
||||
Name = name;
|
||||
|
||||
ConnectionStrings = new List<TenantConnectionString>();
|
||||
ExtraProperties = new Dictionary<string, object>();
|
||||
}
|
||||
|
||||
[CanBeNull]
|
||||
public virtual string FindDefaultConnectionString()
|
||||
{
|
||||
return FindConnectionString(Data.ConnectionStrings.DefaultConnectionStringName);
|
||||
}
|
||||
|
||||
[CanBeNull]
|
||||
public virtual string FindConnectionString(string name)
|
||||
{
|
||||
return ConnectionStrings.FirstOrDefault(c => c.Name == name)?.Value;
|
||||
}
|
||||
|
||||
internal void SetName([NotNull] string name)
|
||||
{
|
||||
Check.NotNull(name, nameof(name));
|
||||
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using JetBrains.Annotations;
|
||||
using Volo.Abp.Domain.Entities;
|
||||
|
||||
namespace Volo.Abp.TenantManagement
|
||||
{
|
||||
public class TenantConnectionString : Entity
|
||||
{
|
||||
public virtual Guid TenantId { get; protected set; }
|
||||
|
||||
public virtual string Name { get; protected set; }
|
||||
|
||||
public virtual string Value { get; protected set; }
|
||||
|
||||
protected TenantConnectionString()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public TenantConnectionString(Guid tenantId, [NotNull] string name, [NotNull] string value)
|
||||
{
|
||||
Check.NotNull(name, nameof(name));
|
||||
Check.NotNull(value, nameof(value));
|
||||
|
||||
TenantId = tenantId;
|
||||
Name = name;
|
||||
Value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.EntityFrameworkCore</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.EntityFrameworkCore</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Domain\Volo.Abp.TenantManagement.Domain.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.EntityFrameworkCore\Volo.Abp.EntityFrameworkCore.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,2 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp71</s:String></wpf:ResourceDictionary>
|
||||
@ -0,0 +1,42 @@
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Volo.Abp.TenantManagement.EntityFrameworkCore
|
||||
{
|
||||
public static class AbpTenantManagementDbContextModelCreatingExtensions
|
||||
{
|
||||
public static void ConfigureTenantManagement(
|
||||
this ModelBuilder builder,
|
||||
[CanBeNull] string tablePrefix = AbpTenantManagementConsts.DefaultDbTablePrefix,
|
||||
[CanBeNull] string schema = AbpTenantManagementConsts.DefaultDbSchema)
|
||||
{
|
||||
Check.NotNull(builder, nameof(builder));
|
||||
|
||||
if (tablePrefix == null)
|
||||
{
|
||||
tablePrefix = "";
|
||||
}
|
||||
|
||||
builder.Entity<Tenant>(b =>
|
||||
{
|
||||
b.ToTable(tablePrefix + "Tenants", schema);
|
||||
|
||||
b.Property(t => t.Name).IsRequired().HasMaxLength(TenantConsts.MaxNameLength);
|
||||
|
||||
b.HasMany(u => u.ConnectionStrings).WithOne().HasForeignKey(uc => uc.TenantId).IsRequired();
|
||||
|
||||
b.HasIndex(u => u.Name).IsUnique();
|
||||
});
|
||||
|
||||
builder.Entity<TenantConnectionString>(b =>
|
||||
{
|
||||
b.ToTable(tablePrefix + "TenantConnectionStrings", schema);
|
||||
|
||||
b.HasKey(x => new { x.TenantId, x.Name });
|
||||
|
||||
b.Property(cs => cs.Name).IsRequired().HasMaxLength(TenantConnectionStringConsts.MaxNameLength);
|
||||
b.Property(cs => cs.Value).IsRequired().HasMaxLength(TenantConnectionStringConsts.MaxValueLength);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Volo.Abp.Data;
|
||||
using Volo.Abp.EntityFrameworkCore;
|
||||
|
||||
namespace Volo.Abp.TenantManagement.EntityFrameworkCore
|
||||
{
|
||||
[ConnectionStringName("AbpTenantManagement")]
|
||||
public interface ITenantManagementDbContext : IEfCoreDbContext
|
||||
{
|
||||
DbSet<Tenant> Tenants { get; set; }
|
||||
|
||||
DbSet<TenantConnectionString> TenantConnectionStrings { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.HttpApi.Client</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.HttpApi.Client</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Application.Contracts\Volo.Abp.TenantManagement.Application.Contracts.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.Http.Client\Volo.Abp.Http.Client.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.HttpApi</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.HttpApi</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Application.Contracts\Volo.Abp.TenantManagement.Application.Contracts.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.AspNetCore.Mvc\Volo.Abp.AspNetCore.Mvc.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.MongoDB</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.MongoDB</PackageId>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<RootNamespace />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.Domain\Volo.Abp.TenantManagement.Domain.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.MongoDB\Volo.Abp.MongoDB.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,2 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp71</s:String></wpf:ResourceDictionary>
|
||||
@ -0,0 +1,10 @@
|
||||
{
|
||||
"culture": "en",
|
||||
"texts": {
|
||||
"Menu:TenantManagement": "Tenant management",
|
||||
"Tenants": "Tenants",
|
||||
"NewTenant": "New tenant",
|
||||
"TenantName": "Tenant name",
|
||||
"TenantDeletionConfirmationMessage": "Tenant '{0}' will be deleted. Do you confirm that?"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
@page
|
||||
@using Microsoft.Extensions.Localization
|
||||
@using Volo.Abp.TenantManagement.Localization
|
||||
@using Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
|
||||
@model CreateModalModel
|
||||
@inject IStringLocalizer<AbpTenantManagementResource> L
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
<form method="post" asp-page="/TenantManagement/Tenants/CreateModal">
|
||||
<abp-modal>
|
||||
<abp-modal-header title="@L["NewTenant"]"></abp-modal-header>
|
||||
<abp-modal-body>
|
||||
<abp-input asp-for="Tenant.Name" label="@L["TenantName"].Value" />
|
||||
</abp-modal-body>
|
||||
<abp-modal-footer></abp-modal-footer>
|
||||
</abp-modal>
|
||||
</form>
|
||||
@ -0,0 +1,19 @@
|
||||
@page
|
||||
@using Microsoft.AspNetCore.Mvc.Localization
|
||||
@using Volo.Abp.TenantManagement.Localization
|
||||
@using Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
|
||||
@model EditModalModel
|
||||
@inject IHtmlLocalizer<AbpTenantManagementResource> L
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
<form method="post" asp-page="/TenantManagement/Tenants/EditModal" autocomplete="off">
|
||||
<abp-modal>
|
||||
<abp-modal-header title="@L["Edit"].Value"></abp-modal-header>
|
||||
<abp-modal-body>
|
||||
<input asp-for="Tenant.Id" />
|
||||
<abp-input asp-for="Tenant.Name" label="@L["TenantName"].Value" />
|
||||
</abp-modal-body>
|
||||
<abp-modal-footer></abp-modal-footer>
|
||||
</abp-modal>
|
||||
</form>
|
||||
@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
|
||||
|
||||
namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
|
||||
{
|
||||
public class EditModalModel : AbpPageModel
|
||||
{
|
||||
[BindProperty]
|
||||
public TenantInfoModel Tenant { get; set; }
|
||||
|
||||
private readonly ITenantAppService _tenantAppService;
|
||||
|
||||
public EditModalModel(ITenantAppService tenantAppService)
|
||||
{
|
||||
_tenantAppService = tenantAppService;
|
||||
}
|
||||
|
||||
public async Task OnGetAsync(Guid id)
|
||||
{
|
||||
Tenant = ObjectMapper.Map<TenantDto, TenantInfoModel>(
|
||||
await _tenantAppService.GetAsync(id)
|
||||
);
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostAsync()
|
||||
{
|
||||
ValidateModel();
|
||||
|
||||
var input = ObjectMapper.Map<TenantInfoModel, TenantUpdateDto>(Tenant);
|
||||
await _tenantAppService.UpdateAsync(Tenant.Id, input);
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
public class TenantInfoModel
|
||||
{
|
||||
[HiddenInput]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[StringLength(TenantConsts.MaxNameLength)]
|
||||
[Display(Name = "TenantName")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
@page
|
||||
@using Microsoft.AspNetCore.Mvc.Localization
|
||||
@using Volo.Abp.TenantManagement.Localization
|
||||
@using Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
|
||||
@model IndexModel
|
||||
@inject IHtmlLocalizer<AbpTenantManagementResource> L
|
||||
@section styles {
|
||||
<link rel="stylesheet" type="text/css" href="~/modules/multi-tenancy/views/tenants/index.css" />
|
||||
}
|
||||
@section scripts {
|
||||
<script type="text/javascript" src="~/modules/multi-tenancy/views/tenants/index.js"></script>
|
||||
}
|
||||
<abp-card id="TenantsWrapper">
|
||||
<abp-card-header>
|
||||
<abp-row>
|
||||
<abp-column size-md="_6">
|
||||
<h2>@L["Tenants"]</h2>
|
||||
</abp-column>
|
||||
<abp-column size-md="_6" class="text-right">
|
||||
<abp-button button-type="Primary" name="CreateTenant" icon="plus" text="@L["NewTenant"].Value" />
|
||||
</abp-column>
|
||||
</abp-row>
|
||||
</abp-card-header>
|
||||
<abp-card-body>
|
||||
<table class="table table-striped nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>@L["Actions"]</th>
|
||||
<th>@L["TenantName"]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</abp-card-body>
|
||||
</abp-card>
|
||||
@ -0,0 +1,12 @@
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
|
||||
namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
|
||||
{
|
||||
public class IndexModel : PageModel
|
||||
{
|
||||
public void OnGet()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap
|
||||
@ -0,0 +1,27 @@
|
||||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:55673/",
|
||||
"sslPort": 0
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"Volo.Abp.TenantManagement.Web": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:55676/"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<Import Project="..\..\common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<AssemblyName>Volo.Abp.TenantManagement.Web</AssemblyName>
|
||||
<PackageId>Volo.Abp.TenantManagement.Web</PackageId>
|
||||
<IsPackable>true</IsPackable>
|
||||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
|
||||
<OutputType>Library</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="wwwroot\**\*.*" />
|
||||
<EmbeddedResource Include="Pages\**\*.cshtml" />
|
||||
<EmbeddedResource Include="Localization\Resources\AbpTenantManagement\Web\*.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Volo.Abp.TenantManagement.HttpApi\Volo.Abp.TenantManagement.HttpApi.csproj" />
|
||||
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj" />
|
||||
<ProjectReference Include="..\..\..\abp\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,49 @@
|
||||
{
|
||||
"compilers": {
|
||||
"less": {
|
||||
"autoPrefix": "",
|
||||
"cssComb": "none",
|
||||
"ieCompat": true,
|
||||
"strictMath": false,
|
||||
"strictUnits": false,
|
||||
"relativeUrls": true,
|
||||
"rootPath": "",
|
||||
"sourceMapRoot": "",
|
||||
"sourceMapBasePath": "",
|
||||
"sourceMap": false
|
||||
},
|
||||
"sass": {
|
||||
"includePath": "",
|
||||
"indentType": "space",
|
||||
"indentWidth": 2,
|
||||
"outputStyle": "nested",
|
||||
"Precision": 5,
|
||||
"relativeUrls": true,
|
||||
"sourceMapRoot": "",
|
||||
"sourceMap": false
|
||||
},
|
||||
"stylus": {
|
||||
"sourceMap": false
|
||||
},
|
||||
"babel": {
|
||||
"sourceMap": false
|
||||
},
|
||||
"coffeescript": {
|
||||
"bare": false,
|
||||
"runtimeMode": "node",
|
||||
"sourceMap": false
|
||||
}
|
||||
},
|
||||
"minifiers": {
|
||||
"css": {
|
||||
"enabled": true,
|
||||
"termSemicolons": true,
|
||||
"gzip": false
|
||||
},
|
||||
"javascript": {
|
||||
"enabled": true,
|
||||
"termSemicolons": true,
|
||||
"gzip": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
//TODO: This code is duplicated for other pages too. Unify them.
|
||||
.dataTable {
|
||||
width: 100% !important;
|
||||
border-spacing: 0 !important;
|
||||
}
|
||||
|
||||
.table td, .table th {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
|
||||
.dataTable {
|
||||
tbody {
|
||||
tr {
|
||||
td {
|
||||
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.dropdown {
|
||||
ul.dropdown-menu {
|
||||
li {
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
li:hover {
|
||||
background: #f4f5f8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
# abp-users
|
||||
Users module for ABP framework.
|
||||
@ -0,0 +1,16 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Version>0.3.0</Version>
|
||||
<NoWarn>$(NoWarn);CS1591</NoWarn>
|
||||
<PackageIconUrl>http://www.aspnetboilerplate.com/images/abp_nupkg.png</PackageIconUrl>
|
||||
<PackageProjectUrl>http://abp.io</PackageProjectUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/volosoft/abp/</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.1" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue