forked from MDCPS/DamageAssessment_Backend
		
	Docker Azure sync with latest changes
This commit is contained in:
		| @ -14,6 +14,16 @@ namespace DamageAssesment.Api.UsersAccess.Controllers | ||||
|         { | ||||
|             this.userAccessProvider = userAccessProvider; | ||||
|         } | ||||
|         [HttpPost("dadeschooltoken")] | ||||
|         public async Task<ActionResult> DadeSchoolAuthenticateAsync(string username, string password) | ||||
|         { | ||||
|             var result = await userAccessProvider.DadeSchoolAuthenticateAsync(username, password); | ||||
|             if (result.IsSuccess) | ||||
|             { | ||||
|                 return Ok(result.TokenResponse); | ||||
|             } | ||||
|             return Unauthorized(result.ErrorMessage); | ||||
|         } | ||||
|         [Authorize(Policy = "Dadeschools")] | ||||
|         [HttpPost("token/{employecode}")] | ||||
|         public async Task<ActionResult> AuthenticateAsync(string employecode) | ||||
|  | ||||
| @ -4,6 +4,8 @@ | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
| @ -22,6 +24,7 @@ | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="7.0.10" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" /> | ||||
|     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.UsersAccess/DamageAssesment.Api.UsersAccess.csproj", "DamageAssesment.Api.UsersAccess/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.UsersAccess/DamageAssesment.Api.UsersAccess.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.UsersAccess" | ||||
| RUN dotnet build "DamageAssesment.Api.UsersAccess.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.UsersAccess.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.UsersAccess.dll"] | ||||
| @ -11,6 +11,7 @@ namespace DamageAssesment.Api.UsersAccess.Interfaces | ||||
|         public Task<(bool IsSuccess, Models.User User, string ErrorMessage)> DeleteUserAsync(int Id); | ||||
|         public Task<(bool IsSuccess, IEnumerable<Models.Role> Roles, string ErrorMessage)> GetRolesAsync(); | ||||
|         public  Task<(bool IsSuccess, Models.TokenResponse TokenResponse, string ErrorMessage)> AuthenticateAsync(string employeCode); | ||||
|         public Task<(bool IsSuccess, Models.DadeSchoolToken TokenResponse, string ErrorMessage)> DadeSchoolAuthenticateAsync(string username, string password); | ||||
|         public Task<(bool IsSuccess, Models.TokenResponse TokenResponse, string ErrorMessage)>RefreshTokenAsync(TokenResponse tokenResponse); | ||||
|         public void seedData(); | ||||
|     } | ||||
|  | ||||
| @ -0,0 +1,10 @@ | ||||
| namespace DamageAssesment.Api.UsersAccess.Models | ||||
| { | ||||
|     public class DadeSchoolToken | ||||
|     { | ||||
|         public string access_token { get; set; } | ||||
|         public int expires_in { get; set; } | ||||
|         public string token_type { get; set; } | ||||
|         public string scope { get; set; } | ||||
|     } | ||||
| } | ||||
| @ -17,7 +17,9 @@ | ||||
|       "applicationUrl": "http://localhost:5027", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5027" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +28,21 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:28382", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| } | ||||
| @ -6,6 +6,7 @@ using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.Extensions.Options; | ||||
| using Microsoft.IdentityModel.Tokens; | ||||
| using System.Data; | ||||
| using Newtonsoft.Json; | ||||
| using System.IdentityModel.Tokens.Jwt; | ||||
| using System.Security.Claims; | ||||
| using System.Text; | ||||
| @ -19,9 +20,10 @@ namespace DamageAssesment.Api.UsersAccess.Providers | ||||
|         private readonly IMapper mapper; | ||||
|         //private readonly IEmployeeServiceProvider employeeServiceProvider; | ||||
|         private readonly JwtSettings jwtSettings; | ||||
|         private readonly ITokenServiceProvider tokenServiceProvider; | ||||
|         private readonly ITokenServiceProvider tokenServiceProvider;  | ||||
|         private readonly IConfiguration configuration; | ||||
|  | ||||
|         public UsersAccessProvider(IOptions<JwtSettings> options, ITokenServiceProvider tokenServiceProvider, UsersAccessDbContext userAccessDbContext, IEmployeeServiceProvider employeeServiceProvider, ILogger<UsersAccessProvider> logger, IMapper mapper) | ||||
|         public UsersAccessProvider(IConfiguration configuration,IOptions<JwtSettings> options, ITokenServiceProvider tokenServiceProvider, UsersAccessDbContext userAccessDbContext, IEmployeeServiceProvider employeeServiceProvider, ILogger<UsersAccessProvider> logger, IMapper mapper) | ||||
|         { | ||||
|             this.userAccessDbContext = userAccessDbContext; | ||||
|             //this.employeeServiceProvider = employeeServiceProvider; | ||||
| @ -29,26 +31,27 @@ namespace DamageAssesment.Api.UsersAccess.Providers | ||||
|             this.mapper = mapper; | ||||
|             jwtSettings = options.Value; | ||||
|             this.tokenServiceProvider = tokenServiceProvider; | ||||
|            // seedData(); | ||||
|             this.configuration = configuration; | ||||
|             // seedData(); | ||||
|         } | ||||
|  | ||||
|         public void seedData() | ||||
|         { | ||||
|             if (!userAccessDbContext.Users.Any()) | ||||
|             { | ||||
|                 userAccessDbContext.Users.Add(new Db.User { Id = 1, EmployeeId = 1, EmployeeCode = "Emp1", RoleId = 1, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 userAccessDbContext.Users.Add(new Db.User { Id = 2, EmployeeId = 2, EmployeeCode = "Emp2", RoleId = 2, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 userAccessDbContext.Users.Add(new Db.User { Id = 3, EmployeeId = 3, EmployeeCode = "Emp3", RoleId = 3, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 userAccessDbContext.Users.Add(new Db.User { EmployeeId = 1, EmployeeCode = "Emp1", RoleId = 1, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 userAccessDbContext.Users.Add(new Db.User { EmployeeId = 2, EmployeeCode = "Emp2", RoleId = 2, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 //userAccessDbContext.Users.Add(new Db.User { EmployeeId = 3, EmployeeCode = "Emp3", RoleId = 3, IsActive = true, CreateDate = DateTime.Now }); | ||||
|                 userAccessDbContext.SaveChanges(); | ||||
|             } | ||||
|  | ||||
|             if (!userAccessDbContext.Roles.Any()) | ||||
|             { | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role { Id = 1, Name = "admin", Description ="Administrator role have full access" }); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role { Id = 2, Name = "user", Description =" User role"}); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role { Id = 3, Name = "survey", Description ="Survey role" }); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role { Id = 4, Name = "report", Description ="Report role"}); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role { Id = 5, Name = "document", Description ="Document role" }); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role {  Name = "admin", Description ="Administrator role have full access" }); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role {  Name = "user", Description =" User role"}); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role {  Name = "survey", Description ="Survey role" }); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role {  Name = "report", Description ="Report role"}); | ||||
|                 userAccessDbContext.Roles.Add(new Db.Role {  Name = "document", Description ="Document role" }); | ||||
|                 userAccessDbContext.SaveChanges(); | ||||
|             } | ||||
|         } | ||||
| @ -187,7 +190,35 @@ namespace DamageAssesment.Api.UsersAccess.Providers | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, DadeSchoolToken TokenResponse, string ErrorMessage)> DadeSchoolAuthenticateAsync(string username, string password) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 var client = new HttpClient(); | ||||
|                 var request = new HttpRequestMessage(HttpMethod.Post, configuration.GetValue<string>("Dadeschools:TokenUrl")); | ||||
|                 var collection = new List<KeyValuePair<string, string>>(); | ||||
|                 collection.Add(new("client_id", configuration.GetValue<string>("Dadeschools:TokenClientId"))); | ||||
|                 collection.Add(new("client_secret", configuration.GetValue<string>("Dadeschools:TokenClientSecret"))); | ||||
|                 collection.Add(new("scope", configuration.GetValue<string>("Dadeschools:scope"))); | ||||
|                 collection.Add(new("grant_type", configuration.GetValue<string>("Dadeschools:grant_type"))); | ||||
|                 collection.Add(new("username", username)); | ||||
|                 collection.Add(new("password", password)); | ||||
|                 var content = new FormUrlEncodedContent(collection); | ||||
|                 request.Content = content; | ||||
|                 var response = await client.SendAsync(request); | ||||
|                 var responseString = await response.Content.ReadAsStringAsync(); | ||||
|                 if (response.IsSuccessStatusCode) | ||||
|                 { | ||||
|                     return (true, JsonConvert.DeserializeObject<DadeSchoolToken>(responseString), ""); | ||||
|                 } | ||||
|                 return (false, null, responseString); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, TokenResponse TokenResponse, string ErrorMessage)> AuthenticateAsync(string employecode) | ||||
|         { | ||||
|            | ||||
|  | ||||
| @ -21,6 +21,10 @@ | ||||
|     "TokenUrl": "https://dev-graph.dadeschools.net/connect/token", | ||||
|     "ClientId": "dmapi", | ||||
|     "ClientSecret": "bfce2c8d-2064-4a02-b19d-7f1d42b16eae", | ||||
|     "TokenClientId": "damage_assessment_postman", | ||||
|     "TokenClientSecret": "e4774164-f018-44c9-b9d2-3a29fc21db3c", | ||||
|     "scope": "openid profile", | ||||
|     "grant_type": "password", | ||||
|     "Name": "Dadeschools Identity Server" | ||||
|   }, | ||||
|   "Scopes": [ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user