diff --git a/Yavsc/Interfaces/IIdentified.cs b/Yavsc.Api/Interfaces/IIdentified.cs similarity index 100% rename from Yavsc/Interfaces/IIdentified.cs rename to Yavsc.Api/Interfaces/IIdentified.cs diff --git a/Yavsc/Interfaces/IPerformerSpecified.cs b/Yavsc.Api/Interfaces/IPerformerSpecified.cs similarity index 100% rename from Yavsc/Interfaces/IPerformerSpecified.cs rename to Yavsc.Api/Interfaces/IPerformerSpecified.cs diff --git a/Yavsc/Interfaces/IRating.cs b/Yavsc.Api/Interfaces/IRating.cs similarity index 100% rename from Yavsc/Interfaces/IRating.cs rename to Yavsc.Api/Interfaces/IRating.cs diff --git a/Yavsc/Interfaces/ITitle.cs b/Yavsc.Api/Interfaces/ITitle.cs similarity index 100% rename from Yavsc/Interfaces/ITitle.cs rename to Yavsc.Api/Interfaces/ITitle.cs diff --git a/Yavsc/Model/Access/Publishing.cs b/Yavsc.Api/Model/Access/Publishing.cs similarity index 97% rename from Yavsc/Model/Access/Publishing.cs rename to Yavsc.Api/Model/Access/Publishing.cs index 7dc1bf1e..a47c69ef 100644 --- a/Yavsc/Model/Access/Publishing.cs +++ b/Yavsc.Api/Model/Access/Publishing.cs @@ -21,7 +21,7 @@ -namespace Yavsc.Models +namespace Yavsc.Models.Access { /// diff --git a/Yavsc/Model/Auth/ApplicationTypes.cs b/Yavsc.Api/Model/Auth/ApplicationTypes.cs similarity index 100% rename from Yavsc/Model/Auth/ApplicationTypes.cs rename to Yavsc.Api/Model/Auth/ApplicationTypes.cs diff --git a/Yavsc/Model/Auth/Client.cs b/Yavsc.Api/Model/Auth/Client.cs similarity index 100% rename from Yavsc/Model/Auth/Client.cs rename to Yavsc.Api/Model/Auth/Client.cs diff --git a/Yavsc/Model/Auth/ExternalViewModel.cs b/Yavsc.Api/Model/Auth/ExternalViewModel.cs similarity index 100% rename from Yavsc/Model/Auth/ExternalViewModel.cs rename to Yavsc.Api/Model/Auth/ExternalViewModel.cs diff --git a/Yavsc/Model/Auth/OAuth2Tokens.cs b/Yavsc.Api/Model/Auth/OAuth2Tokens.cs similarity index 100% rename from Yavsc/Model/Auth/OAuth2Tokens.cs rename to Yavsc.Api/Model/Auth/OAuth2Tokens.cs diff --git a/Yavsc/Model/Auth/RefreshToken.cs b/Yavsc.Api/Model/Auth/RefreshToken.cs similarity index 100% rename from Yavsc/Model/Auth/RefreshToken.cs rename to Yavsc.Api/Model/Auth/RefreshToken.cs diff --git a/Yavsc/Model/Auth/Scope.cs b/Yavsc.Api/Model/Auth/Scope.cs similarity index 100% rename from Yavsc/Model/Auth/Scope.cs rename to Yavsc.Api/Model/Auth/Scope.cs diff --git a/Yavsc/Model/Auth/UserCredentials.cs b/Yavsc.Api/Model/Auth/UserCredentials.cs similarity index 100% rename from Yavsc/Model/Auth/UserCredentials.cs rename to Yavsc.Api/Model/Auth/UserCredentials.cs diff --git a/Yavsc/Model/Bank/AccountBalance.cs b/Yavsc.Api/Model/Bank/AccountBalance.cs similarity index 100% rename from Yavsc/Model/Bank/AccountBalance.cs rename to Yavsc.Api/Model/Bank/AccountBalance.cs diff --git a/Yavsc/Model/Bank/BalanceImpact.cs b/Yavsc.Api/Model/Bank/BalanceImpact.cs similarity index 100% rename from Yavsc/Model/Bank/BalanceImpact.cs rename to Yavsc.Api/Model/Bank/BalanceImpact.cs diff --git a/Yavsc/Model/Billing/Command.cs b/Yavsc.Api/Model/Billing/Command.cs similarity index 100% rename from Yavsc/Model/Billing/Command.cs rename to Yavsc.Api/Model/Billing/Command.cs diff --git a/Yavsc/Model/Billing/CommandLine.cs b/Yavsc.Api/Model/Billing/CommandLine.cs similarity index 100% rename from Yavsc/Model/Billing/CommandLine.cs rename to Yavsc.Api/Model/Billing/CommandLine.cs diff --git a/Yavsc/Model/Billing/Estimate.cs b/Yavsc.Api/Model/Billing/Estimate.cs similarity index 100% rename from Yavsc/Model/Billing/Estimate.cs rename to Yavsc.Api/Model/Billing/Estimate.cs diff --git a/Yavsc/Model/Billing/EstimateAgreement.cs b/Yavsc.Api/Model/Billing/EstimateAgreement.cs similarity index 100% rename from Yavsc/Model/Billing/EstimateAgreement.cs rename to Yavsc.Api/Model/Billing/EstimateAgreement.cs diff --git a/Yavsc/Model/Billing/NominatvieCommande.cs b/Yavsc.Api/Model/Billing/NominatvieCommande.cs similarity index 100% rename from Yavsc/Model/Billing/NominatvieCommande.cs rename to Yavsc.Api/Model/Billing/NominatvieCommande.cs diff --git a/Yavsc/Model/Billing/Service/ChatBilling.cs b/Yavsc.Api/Model/Billing/Service/ChatBilling.cs similarity index 100% rename from Yavsc/Model/Billing/Service/ChatBilling.cs rename to Yavsc.Api/Model/Billing/Service/ChatBilling.cs diff --git a/Yavsc/Model/Billing/histoestim.cs b/Yavsc.Api/Model/Billing/histoestim.cs similarity index 100% rename from Yavsc/Model/Billing/histoestim.cs rename to Yavsc.Api/Model/Billing/histoestim.cs diff --git a/Yavsc/Model/Billing/satisfaction.cs b/Yavsc.Api/Model/Billing/satisfaction.cs similarity index 100% rename from Yavsc/Model/Billing/satisfaction.cs rename to Yavsc.Api/Model/Billing/satisfaction.cs diff --git a/Yavsc/Model/Billing/writtings.cs b/Yavsc.Api/Model/Billing/writtings.cs similarity index 100% rename from Yavsc/Model/Billing/writtings.cs rename to Yavsc.Api/Model/Billing/writtings.cs diff --git a/Yavsc/Model/Billing/wrtags.cs b/Yavsc.Api/Model/Billing/wrtags.cs similarity index 100% rename from Yavsc/Model/Billing/wrtags.cs rename to Yavsc.Api/Model/Billing/wrtags.cs diff --git a/Yavsc/Model/Blog/Blog.cs b/Yavsc.Api/Model/Blog/Blog.cs similarity index 100% rename from Yavsc/Model/Blog/Blog.cs rename to Yavsc.Api/Model/Blog/Blog.cs diff --git a/Yavsc/Model/Blog/BlogAccess.cs b/Yavsc.Api/Model/Blog/BlogAccess.cs similarity index 100% rename from Yavsc/Model/Blog/BlogAccess.cs rename to Yavsc.Api/Model/Blog/BlogAccess.cs diff --git a/Yavsc/Model/Blog/IBlogspotRepository.cs b/Yavsc.Api/Model/Blog/IBlogspotRepository.cs similarity index 100% rename from Yavsc/Model/Blog/IBlogspotRepository.cs rename to Yavsc.Api/Model/Blog/IBlogspotRepository.cs diff --git a/Yavsc/Model/Blog/comment.cs b/Yavsc.Api/Model/Blog/comment.cs similarity index 100% rename from Yavsc/Model/Blog/comment.cs rename to Yavsc.Api/Model/Blog/comment.cs diff --git a/Yavsc/Model/Booking/BookQuery.cs b/Yavsc.Api/Model/Booking/BookQuery.cs similarity index 100% rename from Yavsc/Model/Booking/BookQuery.cs rename to Yavsc.Api/Model/Booking/BookQuery.cs diff --git a/Yavsc/Model/Booking/RendezVous.cs b/Yavsc.Api/Model/Booking/RendezVous.cs similarity index 100% rename from Yavsc/Model/Booking/RendezVous.cs rename to Yavsc.Api/Model/Booking/RendezVous.cs diff --git a/Yavsc/Model/Calendar/ICalendarManager.cs b/Yavsc.Api/Model/Calendar/ICalendarManager.cs similarity index 100% rename from Yavsc/Model/Calendar/ICalendarManager.cs rename to Yavsc.Api/Model/Calendar/ICalendarManager.cs diff --git a/Yavsc/Model/Calendar/IFreeDateSet.cs b/Yavsc.Api/Model/Calendar/IFreeDateSet.cs similarity index 100% rename from Yavsc/Model/Calendar/IFreeDateSet.cs rename to Yavsc.Api/Model/Calendar/IFreeDateSet.cs diff --git a/Yavsc/Model/Calendar/OpenDay.cs b/Yavsc.Api/Model/Calendar/OpenDay.cs similarity index 100% rename from Yavsc/Model/Calendar/OpenDay.cs rename to Yavsc.Api/Model/Calendar/OpenDay.cs diff --git a/Yavsc/Model/Calendar/Period.cs b/Yavsc.Api/Model/Calendar/Period.cs similarity index 100% rename from Yavsc/Model/Calendar/Period.cs rename to Yavsc.Api/Model/Calendar/Period.cs diff --git a/Yavsc/Model/Calendar/Periodicity.cs b/Yavsc.Api/Model/Calendar/Periodicity.cs similarity index 100% rename from Yavsc/Model/Calendar/Periodicity.cs rename to Yavsc.Api/Model/Calendar/Periodicity.cs diff --git a/Yavsc/Model/Calendar/PositionAndKeyphrase.cs b/Yavsc.Api/Model/Calendar/PositionAndKeyphrase.cs similarity index 100% rename from Yavsc/Model/Calendar/PositionAndKeyphrase.cs rename to Yavsc.Api/Model/Calendar/PositionAndKeyphrase.cs diff --git a/Yavsc/Model/Calendar/ProvidedEvent.cs b/Yavsc.Api/Model/Calendar/ProvidedEvent.cs similarity index 97% rename from Yavsc/Model/Calendar/ProvidedEvent.cs rename to Yavsc.Api/Model/Calendar/ProvidedEvent.cs index b51f6fa7..837bdf50 100644 --- a/Yavsc/Model/Calendar/ProvidedEvent.cs +++ b/Yavsc.Api/Model/Calendar/ProvidedEvent.cs @@ -21,6 +21,7 @@ using System.ComponentModel.DataAnnotations; using Yavsc.Models.Messaging; +using Yavsc.Models.Access; namespace Yavsc.Models.Calendar { diff --git a/Yavsc/Model/Calendar/Schedule.cs b/Yavsc.Api/Model/Calendar/Schedule.cs similarity index 100% rename from Yavsc/Model/Calendar/Schedule.cs rename to Yavsc.Api/Model/Calendar/Schedule.cs diff --git a/Yavsc/Model/Calendar/WeekDay.cs b/Yavsc.Api/Model/Calendar/WeekDay.cs similarity index 100% rename from Yavsc/Model/Calendar/WeekDay.cs rename to Yavsc.Api/Model/Calendar/WeekDay.cs diff --git a/Yavsc/Model/Edition/IDocument.cs b/Yavsc.Api/Model/Edition/IDocument.cs similarity index 100% rename from Yavsc/Model/Edition/IDocument.cs rename to Yavsc.Api/Model/Edition/IDocument.cs diff --git a/Yavsc/Model/Google/AuthToken.cs b/Yavsc.Api/Model/Google/AuthToken.cs similarity index 100% rename from Yavsc/Model/Google/AuthToken.cs rename to Yavsc.Api/Model/Google/AuthToken.cs diff --git a/Yavsc/Model/Google/Calendar/CalendarEventList.cs b/Yavsc.Api/Model/Google/Calendar/CalendarEventList.cs similarity index 100% rename from Yavsc/Model/Google/Calendar/CalendarEventList.cs rename to Yavsc.Api/Model/Google/Calendar/CalendarEventList.cs diff --git a/Yavsc/Model/Google/Calendar/CalendarList.cs b/Yavsc.Api/Model/Google/Calendar/CalendarList.cs similarity index 100% rename from Yavsc/Model/Google/Calendar/CalendarList.cs rename to Yavsc.Api/Model/Google/Calendar/CalendarList.cs diff --git a/Yavsc/Model/Google/Calendar/CalendarListEntry.cs b/Yavsc.Api/Model/Google/Calendar/CalendarListEntry.cs similarity index 100% rename from Yavsc/Model/Google/Calendar/CalendarListEntry.cs rename to Yavsc.Api/Model/Google/Calendar/CalendarListEntry.cs diff --git a/Yavsc/Model/Google/GDate.cs b/Yavsc.Api/Model/Google/GDate.cs similarity index 100% rename from Yavsc/Model/Google/GDate.cs rename to Yavsc.Api/Model/Google/GDate.cs diff --git a/Yavsc/Model/Google/Messaging/GCMRegisterModel.cs b/Yavsc.Api/Model/Google/Messaging/GCMRegisterModel.cs similarity index 100% rename from Yavsc/Model/Google/Messaging/GCMRegisterModel.cs rename to Yavsc.Api/Model/Google/Messaging/GCMRegisterModel.cs diff --git a/Yavsc/Model/Google/Messaging/MessageWithPayLoad.cs b/Yavsc.Api/Model/Google/Messaging/MessageWithPayLoad.cs similarity index 100% rename from Yavsc/Model/Google/Messaging/MessageWithPayLoad.cs rename to Yavsc.Api/Model/Google/Messaging/MessageWithPayLoad.cs diff --git a/Yavsc/Model/Google/Messaging/MessageWithPayloadResponse.cs b/Yavsc.Api/Model/Google/Messaging/MessageWithPayloadResponse.cs similarity index 100% rename from Yavsc/Model/Google/Messaging/MessageWithPayloadResponse.cs rename to Yavsc.Api/Model/Google/Messaging/MessageWithPayloadResponse.cs diff --git a/Yavsc/Model/Google/People/People.cs b/Yavsc.Api/Model/Google/People/People.cs similarity index 100% rename from Yavsc/Model/Google/People/People.cs rename to Yavsc.Api/Model/Google/People/People.cs diff --git a/Yavsc/Model/Google/Resource.cs b/Yavsc.Api/Model/Google/Resource.cs similarity index 100% rename from Yavsc/Model/Google/Resource.cs rename to Yavsc.Api/Model/Google/Resource.cs diff --git a/Yavsc/Model/Google/Tracks/Entity.cs b/Yavsc.Api/Model/Google/Tracks/Entity.cs similarity index 100% rename from Yavsc/Model/Google/Tracks/Entity.cs rename to Yavsc.Api/Model/Google/Tracks/Entity.cs diff --git a/Yavsc/Model/Google/Tracks/EntityQuery.cs b/Yavsc.Api/Model/Google/Tracks/EntityQuery.cs similarity index 100% rename from Yavsc/Model/Google/Tracks/EntityQuery.cs rename to Yavsc.Api/Model/Google/Tracks/EntityQuery.cs diff --git a/Yavsc/Model/Identity/ApplicationUser.cs b/Yavsc.Api/Model/Identity/ApplicationUser.cs similarity index 89% rename from Yavsc/Model/Identity/ApplicationUser.cs rename to Yavsc.Api/Model/Identity/ApplicationUser.cs index d34e8a7b..bb3ded1a 100644 --- a/Yavsc/Model/Identity/ApplicationUser.cs +++ b/Yavsc.Api/Model/Identity/ApplicationUser.cs @@ -7,7 +7,6 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Yavsc.Models { - // Add profile data for application users by adding properties to the ApplicationUser class public class ApplicationUser : IdentityUser { diff --git a/Yavsc/Model/Identity/MobileAppDeclaration.cs b/Yavsc.Api/Model/Identity/MobileAppDeclaration.cs similarity index 100% rename from Yavsc/Model/Identity/MobileAppDeclaration.cs rename to Yavsc.Api/Model/Identity/MobileAppDeclaration.cs diff --git a/Yavsc/Model/Identity/passwrecovery.cs b/Yavsc.Api/Model/Identity/passwrecovery.cs similarity index 100% rename from Yavsc/Model/Identity/passwrecovery.cs rename to Yavsc.Api/Model/Identity/passwrecovery.cs diff --git a/Yavsc/Model/Market/BaseProduct.cs b/Yavsc.Api/Model/Market/BaseProduct.cs similarity index 100% rename from Yavsc/Model/Market/BaseProduct.cs rename to Yavsc.Api/Model/Market/BaseProduct.cs diff --git a/Yavsc/Model/Market/Catalog.cs b/Yavsc.Api/Model/Market/Catalog.cs similarity index 100% rename from Yavsc/Model/Market/Catalog.cs rename to Yavsc.Api/Model/Market/Catalog.cs diff --git a/Yavsc/Model/Market/Product.cs b/Yavsc.Api/Model/Market/Product.cs similarity index 100% rename from Yavsc/Model/Market/Product.cs rename to Yavsc.Api/Model/Market/Product.cs diff --git a/Yavsc/Model/Market/Service.cs b/Yavsc.Api/Model/Market/Service.cs similarity index 100% rename from Yavsc/Model/Market/Service.cs rename to Yavsc.Api/Model/Market/Service.cs diff --git a/Yavsc/Model/Messaging/BaseEvent.cs b/Yavsc.Api/Model/Messaging/BaseEvent.cs similarity index 100% rename from Yavsc/Model/Messaging/BaseEvent.cs rename to Yavsc.Api/Model/Messaging/BaseEvent.cs diff --git a/Yavsc/Model/Messaging/BookQueryEvent.cs b/Yavsc.Api/Model/Messaging/BookQueryEvent.cs similarity index 100% rename from Yavsc/Model/Messaging/BookQueryEvent.cs rename to Yavsc.Api/Model/Messaging/BookQueryEvent.cs diff --git a/Yavsc/Model/Messaging/CircleEvent.cs b/Yavsc.Api/Model/Messaging/CircleEvent.cs similarity index 100% rename from Yavsc/Model/Messaging/CircleEvent.cs rename to Yavsc.Api/Model/Messaging/CircleEvent.cs diff --git a/Yavsc/Model/Messaging/Notification.cs b/Yavsc.Api/Model/Messaging/Notification.cs similarity index 100% rename from Yavsc/Model/Messaging/Notification.cs rename to Yavsc.Api/Model/Messaging/Notification.cs diff --git a/Yavsc/Model/Messaging/YaEvent.cs b/Yavsc.Api/Model/Messaging/YaEvent.cs similarity index 95% rename from Yavsc/Model/Messaging/YaEvent.cs rename to Yavsc.Api/Model/Messaging/YaEvent.cs index f4d3b89a..f70b8e86 100644 --- a/Yavsc/Model/Messaging/YaEvent.cs +++ b/Yavsc.Api/Model/Messaging/YaEvent.cs @@ -32,7 +32,7 @@ namespace Yavsc.Models.Messaging /// The name of the NF provider. /// [Display(Name="ProviderName")] - public string ProviderName { get; set; } = Constants.ApplicationName; + public string ProviderName { get; set; } /// /// The NF provider identifier. /// diff --git a/Yavsc/Model/Relationship/Circle.cs b/Yavsc.Api/Model/Relationship/Circle.cs similarity index 100% rename from Yavsc/Model/Relationship/Circle.cs rename to Yavsc.Api/Model/Relationship/Circle.cs diff --git a/Yavsc/Model/Relationship/CircleMember.cs b/Yavsc.Api/Model/Relationship/CircleMember.cs similarity index 100% rename from Yavsc/Model/Relationship/CircleMember.cs rename to Yavsc.Api/Model/Relationship/CircleMember.cs diff --git a/Yavsc/Model/Relationship/Contact.cs b/Yavsc.Api/Model/Relationship/Contact.cs similarity index 100% rename from Yavsc/Model/Relationship/Contact.cs rename to Yavsc.Api/Model/Relationship/Contact.cs diff --git a/Yavsc/Model/Relationship/Location.cs b/Yavsc.Api/Model/Relationship/Location.cs similarity index 100% rename from Yavsc/Model/Relationship/Location.cs rename to Yavsc.Api/Model/Relationship/Location.cs diff --git a/Yavsc/Model/Relationship/Tag.cs b/Yavsc.Api/Model/Relationship/Tag.cs similarity index 100% rename from Yavsc/Model/Relationship/Tag.cs rename to Yavsc.Api/Model/Relationship/Tag.cs diff --git a/Yavsc/Model/Relationship/Tagged.cs b/Yavsc.Api/Model/Relationship/Tagged.cs similarity index 100% rename from Yavsc/Model/Relationship/Tagged.cs rename to Yavsc.Api/Model/Relationship/Tagged.cs diff --git a/Yavsc/Model/Workflow/Activity.cs b/Yavsc.Api/Model/Workflow/Activity.cs similarity index 100% rename from Yavsc/Model/Workflow/Activity.cs rename to Yavsc.Api/Model/Workflow/Activity.cs diff --git a/Yavsc/Model/Workflow/IRequisition.cs b/Yavsc.Api/Model/Workflow/IRequisition.cs similarity index 100% rename from Yavsc/Model/Workflow/IRequisition.cs rename to Yavsc.Api/Model/Workflow/IRequisition.cs diff --git a/Yavsc/Model/Workflow/PerformerProfile.cs b/Yavsc.Api/Model/Workflow/PerformerProfile.cs similarity index 100% rename from Yavsc/Model/Workflow/PerformerProfile.cs rename to Yavsc.Api/Model/Workflow/PerformerProfile.cs diff --git a/Yavsc/Model/Workflow/Process/Action.cs b/Yavsc.Api/Model/Workflow/Process/Action.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/Action.cs rename to Yavsc.Api/Model/Workflow/Process/Action.cs diff --git a/Yavsc/Model/Workflow/Process/Conjonction.cs b/Yavsc.Api/Model/Workflow/Process/Conjonction.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/Conjonction.cs rename to Yavsc.Api/Model/Workflow/Process/Conjonction.cs diff --git a/Yavsc/Model/Workflow/Process/Disjonction.cs b/Yavsc.Api/Model/Workflow/Process/Disjonction.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/Disjonction.cs rename to Yavsc.Api/Model/Workflow/Process/Disjonction.cs diff --git a/Yavsc/Model/Workflow/Process/InputValue.cs b/Yavsc.Api/Model/Workflow/Process/InputValue.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/InputValue.cs rename to Yavsc.Api/Model/Workflow/Process/InputValue.cs diff --git a/Yavsc/Model/Workflow/Process/NamedRequisition.cs b/Yavsc.Api/Model/Workflow/Process/NamedRequisition.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/NamedRequisition.cs rename to Yavsc.Api/Model/Workflow/Process/NamedRequisition.cs diff --git a/Yavsc/Model/Workflow/Process/Negation.cs b/Yavsc.Api/Model/Workflow/Process/Negation.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/Negation.cs rename to Yavsc.Api/Model/Workflow/Process/Negation.cs diff --git a/Yavsc/Model/Workflow/Process/Rule.cs b/Yavsc.Api/Model/Workflow/Process/Rule.cs similarity index 100% rename from Yavsc/Model/Workflow/Process/Rule.cs rename to Yavsc.Api/Model/Workflow/Process/Rule.cs diff --git a/Yavsc/Model/Workflow/Projet.cs b/Yavsc.Api/Model/Workflow/Projet.cs similarity index 100% rename from Yavsc/Model/Workflow/Projet.cs rename to Yavsc.Api/Model/Workflow/Projet.cs diff --git a/Yavsc/Model/Workflow/Skill.cs b/Yavsc.Api/Model/Workflow/Skill.cs similarity index 100% rename from Yavsc/Model/Workflow/Skill.cs rename to Yavsc.Api/Model/Workflow/Skill.cs diff --git a/Yavsc/Model/Workflow/UserSkills.cs b/Yavsc.Api/Model/Workflow/UserSkills.cs similarity index 100% rename from Yavsc/Model/Workflow/UserSkills.cs rename to Yavsc.Api/Model/Workflow/UserSkills.cs diff --git a/Yavsc/Model/Workflow/hr.cs b/Yavsc.Api/Model/Workflow/hr.cs similarity index 100% rename from Yavsc/Model/Workflow/hr.cs rename to Yavsc.Api/Model/Workflow/hr.cs diff --git a/Yavsc/Model/Workflow/taskdeps.cs b/Yavsc.Api/Model/Workflow/taskdeps.cs similarity index 100% rename from Yavsc/Model/Workflow/taskdeps.cs rename to Yavsc.Api/Model/Workflow/taskdeps.cs diff --git a/Yavsc/Model/Workflow/tasks.cs b/Yavsc.Api/Model/Workflow/tasks.cs similarity index 100% rename from Yavsc/Model/Workflow/tasks.cs rename to Yavsc.Api/Model/Workflow/tasks.cs diff --git a/Yavsc/Model/Workflow/wrfiles.cs b/Yavsc.Api/Model/Workflow/wrfiles.cs similarity index 100% rename from Yavsc/Model/Workflow/wrfiles.cs rename to Yavsc.Api/Model/Workflow/wrfiles.cs diff --git a/Yavsc/Model/societe.com/CompanyInfo.cs b/Yavsc.Api/Model/societe.com/CompanyInfo.cs similarity index 100% rename from Yavsc/Model/societe.com/CompanyInfo.cs rename to Yavsc.Api/Model/societe.com/CompanyInfo.cs diff --git a/Yavsc.Api/package.json b/Yavsc.Api/package.json new file mode 100644 index 00000000..e43a2b3f --- /dev/null +++ b/Yavsc.Api/package.json @@ -0,0 +1,7 @@ +{ + "name": "Yavsc.Api", + "version": "0.0.0", + "devDependencies": { + "gulp": "^3.9.0" + } +} diff --git a/Yavsc.Api/project.json b/Yavsc.Api/project.json new file mode 100644 index 00000000..aaebb831 --- /dev/null +++ b/Yavsc.Api/project.json @@ -0,0 +1,23 @@ +{ + "version": "1.0.0-*", + "description": "Api Class Library", + "authors": [ "Class Library template" ], + "tags": [""], + "projectUrl": "", + "licenseUrl": "", + "tooling": { + "defaultNamespace": "Yavsc" + }, + "dependencies": { + "EntityFramework.Commands": "7.0.0-rc1-*", + "EntityFramework.Core": "7.0.0-rc1-*", + "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-*", + "EntityFramework.Relational": "7.0.0-rc1-*", + "EntityFramework7.Npgsql": "3.1.0-*", + "EntityFramework7.Npgsql.Design": "3.1.0-*", + "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-*" + }, + "frameworks": { + "net451": { } + } +} diff --git a/Yavsc/ApiController/AccountController.cs b/Yavsc/ApiController/AccountController.cs index 150ad33f..2f6e281f 100644 --- a/Yavsc/ApiController/AccountController.cs +++ b/Yavsc/ApiController/AccountController.cs @@ -119,7 +119,7 @@ namespace Yavsc.WebApi.Controllers base.Dispose(disposing); } - [HttpGet("~/api/me"),Produces("application/json")] + [HttpGet("~/api/me")] public async Task Me () { if (User==null) diff --git a/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs b/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs index 22ecf269..7685889d 100644 --- a/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs +++ b/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs @@ -90,6 +90,7 @@ namespace OAuth.AspNet.AuthServer public bool TryGetFormCredentials(out string clientId, out string clientSecret) { clientId = Parameters[Constants.Parameters.ClientId]; + if (!string.IsNullOrEmpty(clientId)) { clientSecret = Parameters[Constants.Parameters.ClientSecret]; diff --git a/Yavsc/Controllers/AccountController.cs b/Yavsc/Controllers/AccountController.cs index 1ee2e02f..269334b2 100644 --- a/Yavsc/Controllers/AccountController.cs +++ b/Yavsc/Controllers/AccountController.cs @@ -99,6 +99,7 @@ namespace Yavsc.Controllers else { ModelState.AddModelError(string.Empty, "Invalid login attempt."); + model.ExternalProviders = HttpContext.GetExternalProviders(); return View(model); } } diff --git a/Yavsc/Interfaces/IDataStore.cs b/Yavsc/Interfaces/IDataStore.cs deleted file mode 100644 index 234e0fdc..00000000 --- a/Yavsc/Interfaces/IDataStore.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Threading.Tasks; - -namespace Yavsc.Interfaces { - - public interface IDataStore { - - Task StoreAsync (string key, T value); - - Task DeleteAsync (string key); - - Task GetAsync (string key); - - Task ClearAsync (); - - } -} \ No newline at end of file diff --git a/Yavsc/Model/Access/PerformerIM.cs b/Yavsc/Model/Access/PerformerIM.cs deleted file mode 100644 index 0519ecba..00000000 --- a/Yavsc/Model/Access/PerformerIM.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Yavsc/Startup/Startup.OAuthHelpers.cs b/Yavsc/Startup/Startup.OAuthHelpers.cs index 4ab5c680..91dcb5e5 100644 --- a/Yavsc/Startup/Startup.OAuthHelpers.cs +++ b/Yavsc/Startup/Startup.OAuthHelpers.cs @@ -38,9 +38,11 @@ namespace Yavsc private Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId, clientSecret; + if (context.TryGetBasicCredentials(out clientId, out clientSecret) || context.TryGetFormCredentials(out clientId, out clientSecret)) { + logger.LogInformation($"ValidateClientAuthentication: Got id&secret: ({clientId} {clientSecret})"); var client = GetApplication(clientId); if (client.Type == ApplicationTypes.NativeConfidential) { @@ -51,7 +53,9 @@ namespace Yavsc } else { - if (client.Secret != Helper.GetHash(clientSecret)) + // if (client.Secret != Helper.GetHash(clientSecret)) + // TODO store a hash in db, not the pass + if (client.Secret != clientSecret) { context.SetError("invalid_clientId", "Client secret is invalid."); return Task.FromResult(null); @@ -70,7 +74,7 @@ namespace Yavsc logger.LogInformation($"\\o/ ValidateClientAuthentication: Validated ({clientId})"); context.Validated(); } - else Startup.logger.LogInformation($"ValidateClientAuthentication: KO ({clientId})"); + else Startup.logger.LogInformation($":'( ValidateClientAuthentication: KO ({clientId})"); } else Startup.logger.LogWarning($"ValidateClientAuthentication: neither Basic nor Form credential were found"); return Task.FromResult(0); diff --git a/Yavsc/Startup/Startup.cs b/Yavsc/Startup/Startup.cs index 0663b9d8..3d121689 100755 --- a/Yavsc/Startup/Startup.cs +++ b/Yavsc/Startup/Startup.cs @@ -182,6 +182,7 @@ namespace Yavsc .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); + config.Filters.Add(new ProducesAttribute("application/json")); config.OutputFormatters.Add(new PdfFormatter()); }).AddFormatterMappings( diff --git a/Yavsc/project.json b/Yavsc/project.json index b9be5731..f9ffd5a7 100755 --- a/Yavsc/project.json +++ b/Yavsc/project.json @@ -45,11 +45,11 @@ "defaultNamespace": "Yavsc" }, "dependencies": { + "Yavsc.Api":"1.0.0", "EntityFramework.Commands": "7.0.0-rc1-*", "EntityFramework.Core": "7.0.0-rc1-*", "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-*", "EntityFramework.Relational": "7.0.0-rc1-*", - "EntityFramework.Sqlite": "7.0.0-rc1-*", "EntityFramework7.Npgsql": "3.1.0-*", "EntityFramework7.Npgsql.Design": "3.1.0-*", "Google.Apis.Core": "1.11.1", diff --git a/Yavsc/project.lock.json b/Yavsc/project.lock.json index f4f94a2a..4c283d85 100644 --- a/Yavsc/project.lock.json +++ b/Yavsc/project.lock.json @@ -135,25 +135,6 @@ "lib/dnx451/EntityFramework.Relational.Design.dll": {} } }, - "EntityFramework.Sqlite/7.0.0-rc1-final": { - "type": "package", - "dependencies": { - "EntityFramework.Relational": "7.0.0-rc1-final", - "Microsoft.Data.Sqlite": "1.0.0-rc1-final" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/net451/EntityFramework.Sqlite.dll": {} - }, - "runtime": { - "lib/net451/EntityFramework.Sqlite.dll": {} - } - }, "EntityFramework7.Npgsql/3.1.0-rc1-3": { "type": "package", "dependencies": { @@ -218,12 +199,12 @@ "Zlib.Portable.Signed": "1.11.0" }, "compile": { - "lib/net45/Google.Apis.dll": {}, - "lib/net45/Google.Apis.PlatformServices.dll": {} + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} }, "runtime": { - "lib/net45/Google.Apis.dll": {}, - "lib/net45/Google.Apis.PlatformServices.dll": {} + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} } }, "Google.Apis.Core/1.11.1": { @@ -1529,7 +1510,7 @@ "lib/net45/Microsoft.CodeAnalysis.CSharp.dll": {} } }, - "Microsoft.Data.Sqlite/1.0.0-rc1-final": { + "Microsoft.Dnx.Compilation.Abstractions/1.0.0-rc1-final": { "type": "package", "dependencies": { "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" @@ -1537,15 +1518,2820 @@ "frameworkAssemblies": [ "Microsoft.CSharp", "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.Abstractions.dll": {} + } + }, + "Microsoft.Dnx.Compilation.CSharp.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "1.1.0-rc1-20151109-01", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.dll": {} + } + }, + "Microsoft.Dnx.Compilation.CSharp.Common/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "1.1.0-rc1-20151109-01", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.dll": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Caching.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Caching.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Caching.Memory/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Caching.Memory.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Caching.Memory.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.CodeGeneration.Core": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.EntityFramework": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.Core/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Core.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Core.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.EntityFramework/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Core": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Text.Encoding" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.EntityFramework.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.EntityFramework.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.Templating/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Runtime", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Templating.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Templating.dll": {} + } + }, + "Microsoft.Extensions.CodeGenerators.Mvc/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.CodeGeneration": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.EntityFramework": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGenerators.Mvc.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGenerators.Mvc.dll": {} + } + }, + "Microsoft.Extensions.Configuration/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Binder.dll": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.CommandLine.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.CommandLine.dll": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.FileProviderExtensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.FileProviderExtensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.FileProviderExtensions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Json/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.DependencyInjection.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} + } + }, + "Microsoft.Extensions.Globalization.CultureInfoCache/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.dll": {} + } + }, + "Microsoft.Extensions.Localization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Localization.dll": {} + } + }, + "Microsoft.Extensions.Localization.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Localization.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Localization.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections.Concurrent", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging.Console/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Console.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Console.dll": {} + } + }, + "Microsoft.Extensions.Logging.Debug/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Debug.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Debug.dll": {} + } + }, + "Microsoft.Extensions.MemoryPool/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.MemoryPool.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.MemoryPool.dll": {} + } + }, + "Microsoft.Extensions.Options/0.0.1-alpha": { + "type": "package" + }, + "Microsoft.Extensions.OptionsModel/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.OptionsModel.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.OptionsModel.dll": {} + } + }, + "Microsoft.Extensions.PlatformAbstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll": {} + } + }, + "Microsoft.Extensions.Primitives/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Primitives.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Primitives.dll": {} + } + }, + "Microsoft.Extensions.WebEncoders/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.WebEncoders.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.WebEncoders.dll": {} + } + }, + "Microsoft.Extensions.WebEncoders.Core/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.WebEncoders.Core.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.WebEncoders.Core.dll": {} + } + }, + "Microsoft.Framework.Configuration/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.dll": {} + } + }, + "Microsoft.Framework.Configuration.Abstractions/1.0.0-beta8": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Framework.Configuration.Binder/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Binder.dll": {} + } + }, + "Microsoft.Framework.Configuration.FileExtensions/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.FileExtensions.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.FileExtensions.dll": {} + } + }, + "Microsoft.Framework.Configuration.Json/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8", + "Microsoft.Framework.Configuration.FileExtensions": "1.0.0-beta8", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Json.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Json.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel/1.0.0-beta4": { + "type": "package", + "dependencies": { + "Microsoft.Framework.ConfigurationModel.Interfaces": "1.0.0-beta4", + "Microsoft.Framework.Runtime.Interfaces": "1.0.0-beta4" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel.Interfaces/1.0.0-beta4": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Interfaces.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Interfaces.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel.Json/1.0.0-beta4": { + "type": "package", + "dependencies": { + "Microsoft.Framework.ConfigurationModel": "1.0.0-beta4", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} + } + }, + "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Runtime.Interfaces.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Runtime.Interfaces.dll": {} + } + }, + "Microsoft.IdentityModel.Logging/1.0.0-rc1-211161024": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Logging.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Logging.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols/2.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "System.IdentityModel.Tokens.Jwt": "5.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Protocols.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Protocols.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/2.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "2.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + } + }, + "Microsoft.Net.Http.Headers/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.Http.Headers.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.Http.Headers.dll": {} + } + }, + "Microsoft.Net.Http.Server/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final", + "Microsoft.Net.WebSockets": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.Http.Server.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.Http.Server.dll": {} + } + }, + "Microsoft.Net.WebSockets/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.WebSockets.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.WebSockets.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23516": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Targets": "1.0.1-beta-23516" + } + }, + "Microsoft.NETCore.Targets/1.0.1-beta-23516": { + "type": "package" + }, + "Microsoft.Owin/2.1.0": { + "type": "package", + "dependencies": { + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.Owin.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.Owin.dll": {} + } + }, + "Microsoft.Owin.Security/2.1.0": { + "type": "package", + "dependencies": { + "Microsoft.Owin": "2.1.0", + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.Owin.Security.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.Owin.Security.dll": {} + } + }, + "Microsoft.Web.Infrastructure/1.0.0": { + "type": "package", + "compile": { + "lib/net40/Microsoft.Web.Infrastructure.dll": {} + }, + "runtime": { + "lib/net40/Microsoft.Web.Infrastructure.dll": {} + } + }, + "MimeKit/1.3.0-beta7": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core", + "System.Data", + "System.Security" + ], + "compile": { + "lib/net451/BouncyCastle.dll": {}, + "lib/net451/MimeKit.dll": {} + }, + "runtime": { + "lib/net451/BouncyCastle.dll": {}, + "lib/net451/MimeKit.dll": {} + } + }, + "Newtonsoft.Json/7.0.1": { + "type": "package", + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, + "Npgsql/3.1.0-alpha6": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net45/Npgsql.dll": {} + }, + "runtime": { + "lib/net45/Npgsql.dll": {} + } + }, + "Owin/1.0.0": { + "type": "package", + "compile": { + "lib/net40/Owin.dll": {} + }, + "runtime": { + "lib/net40/Owin.dll": {} + } + }, + "PayPalButtonManagerSDK/2.10.109": { + "type": "package", + "dependencies": { + "PayPalCoreSDK": "1.7.0" + }, + "compile": { + "lib/net20/PayPalButtonManagerSDK.dll": {} + }, + "runtime": { + "lib/net20/PayPalButtonManagerSDK.dll": {} + } + }, + "PayPalCoreSDK/1.7.1": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "7.0.1" + }, + "compile": { + "lib/net451/PayPalCoreSDK.dll": {} + }, + "runtime": { + "lib/net451/PayPalCoreSDK.dll": {} + } + }, + "Remotion.Linq/2.0.1": { + "type": "package", + "compile": { + "lib/net45/Remotion.Linq.dll": {} + }, + "runtime": { + "lib/net45/Remotion.Linq.dll": {} + } + }, + "System.Collections/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Collections.Immutable/1.1.37": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Immutable.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.0.0-beta-23516": { + "type": "package", + "dependencies": { + "System.Diagnostics.Tracing": "4.0.0", + "System.Runtime": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet5.2/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/dotnet5.2/System.Diagnostics.DiagnosticSource.dll": {} + } + }, + "System.Diagnostics.Tracing/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Globalization/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.IdentityModel.Tokens/5.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "1.0.0-rc1-211161024", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Xml" + ], + "compile": { + "lib/net451/System.IdentityModel.Tokens.dll": {} + }, + "runtime": { + "lib/net451/System.IdentityModel.Tokens.dll": {} + } + }, + "System.IdentityModel.Tokens.Jwt/5.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "System.IdentityModel.Tokens": "5.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/System.IdentityModel.Tokens.Jwt.dll": {} + }, + "runtime": { + "lib/net451/System.IdentityModel.Tokens.Jwt.dll": {} + } + }, + "System.IO/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Linq/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Numerics.Vectors/4.1.1-beta-23516": { + "type": "package", + "compile": { + "lib/portable-net45+win8/System.Numerics.Vectors.dll": {} + }, + "runtime": { + "lib/portable-net45+win8/System.Numerics.Vectors.dll": {} + } + }, + "System.Reflection/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Metadata/1.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Collections.Immutable": "1.1.37", + "System.Diagnostics.Debug": "4.0.0", + "System.IO": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Runtime.InteropServices": "4.0.0", + "System.Text.Encoding": "4.0.0", + "System.Text.Encoding.Extensions": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet5.2/System.Reflection.Metadata.dll": {} + }, + "runtime": { + "lib/dotnet5.2/System.Reflection.Metadata.dll": {} + } + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.InteropServices/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "WebGrease/1.5.2": { + "type": "package", + "dependencies": { + "Antlr": "3.4.1.9004", + "Newtonsoft.Json": "5.0.4" + }, + "compile": { + "lib/WebGrease.dll": {} + }, + "runtime": { + "lib/WebGrease.dll": {} + } + }, + "Yavsc.Api/1.0.0": { + "type": "project", + "framework": ".NETFramework,Version=v4.5.1", + "dependencies": { + "EntityFramework.Commands": "7.0.0-rc1", + "EntityFramework.Core": "7.0.0-rc1", + "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1", + "EntityFramework.Relational": "7.0.0-rc1", + "EntityFramework7.Npgsql": "3.1.0", + "EntityFramework7.Npgsql.Design": "3.1.0", + "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1" + } + }, + "Zlib.Portable.Signed/1.11.0": { + "type": "package", + "compile": { + "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.dll": {} + }, + "runtime": { + "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.dll": {} + } + } + }, + "DNX,Version=v4.5.1/debian.8-x86": { + "Antlr/3.4.1.9004": { + "type": "package", + "compile": { + "lib/Antlr3.Runtime.dll": {} + }, + "runtime": { + "lib/Antlr3.Runtime.dll": {} + } + }, + "EntityFramework.Commands/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational.Design": "7.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/EntityFramework.Commands.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Commands.dll": {} + } + }, + "EntityFramework.Core/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Ix-Async": "1.2.5", + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Remotion.Linq": "2.0.1", + "System.Collections.Immutable": "1.1.36" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.ComponentModel.DataAnnotations", + "System.Core", + "System.Diagnostics.Debug", + "System.Diagnostics.Tools", + "System.Globalization", + "System.Linq", + "System.Linq.Expressions", + "System.Linq.Queryable", + "System.ObjectModel", + "System.Reflection", + "System.Reflection.Extensions", + "System.Resources.ResourceManager", + "System.Runtime", + "System.Runtime.Extensions", + "System.Threading" + ], + "compile": { + "lib/dnx451/EntityFramework.Core.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Core.dll": {} + } + }, + "EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/EntityFramework.MicrosoftSqlServer.dll": {} + }, + "runtime": { + "lib/net451/EntityFramework.MicrosoftSqlServer.dll": {} + } + }, + "EntityFramework.Relational/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Data", + "System.Transactions" + ], + "compile": { + "lib/net451/EntityFramework.Relational.dll": {} + }, + "runtime": { + "lib/net451/EntityFramework.Relational.dll": {} + } + }, + "EntityFramework.Relational.Design/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.ComponentModel.DataAnnotations", + "System.Core", + "System.IO", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/dnx451/EntityFramework.Relational.Design.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Relational.Design.dll": {} + } + }, + "EntityFramework7.Npgsql/3.1.0-rc1-3": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Npgsql": "3.1.0-alpha6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.Diagnostics.Contracts", + "System.Linq.Expressions", + "System.Reflection", + "System.Runtime" + ], + "compile": { + "lib/dnx451/EntityFramework7.Npgsql.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework7.Npgsql.dll": {} + } + }, + "EntityFramework7.Npgsql.Design/3.1.0-rc1-5": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "EntityFramework.Relational": "7.0.0-rc1-final", + "EntityFramework.Relational.Design": "7.0.0-rc1-final", + "EntityFramework7.Npgsql": "3.1.0-rc1-3", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Npgsql": "3.1.0-alpha6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.Diagnostics.Contracts", + "System.Linq.Expressions", + "System.Reflection", + "System.Runtime" + ], + "compile": { + "lib/dnx451/EntityFramework7.Npgsql.Design.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework7.Npgsql.Design.dll": {} + } + }, + "Google.Apis/1.11.1": { + "type": "package", + "dependencies": { + "Google.Apis.Core": "1.11.1", + "log4net": "2.0.3", + "Zlib.Portable.Signed": "1.11.0" + }, + "compile": { + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} + }, + "runtime": { + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} + } + }, + "Google.Apis.Core/1.11.1": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "7.0.1" + }, + "compile": { + "lib/net45/Google.Apis.Core.dll": {} + }, + "runtime": { + "lib/net45/Google.Apis.Core.dll": {} + } + }, + "Ix-Async/1.2.5": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "lib/net45/System.Interactive.Async.dll": {} + }, + "runtime": { + "lib/net45/System.Interactive.Async.dll": {} + } + }, + "jQuery/1.6.4": { + "type": "package" + }, + "log4net/2.0.3": { + "type": "package", + "compile": { + "lib/net40-full/log4net.dll": {} + }, + "runtime": { + "lib/net40-full/log4net.dll": {} + } + }, + "MailKit/1.3.0-beta7": { + "type": "package", + "dependencies": { + "MimeKit": "1.3.0-beta7" + }, + "frameworkAssemblies": [ "System", "System.Core", "System.Data" ], "compile": { - "lib/net451/Microsoft.Data.Sqlite.dll": {} + "lib/net451/MailKit.dll": {} }, "runtime": { - "lib/net451/Microsoft.Data.Sqlite.dll": {} + "lib/net451/MailKit.dll": {} + } + }, + "MarkdownDeep-av.NET/1.5.2": { + "type": "package", + "compile": { + "lib/net451/MarkdownDeep.dll": {} + }, + "runtime": { + "lib/net451/MarkdownDeep.dll": {} + } + }, + "Microsoft.AspNet.Antiforgery/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Antiforgery.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Antiforgery.dll": {} + } + }, + "Microsoft.AspNet.Authentication/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Cookies/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Cookies.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Cookies.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Facebook/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication.OAuth": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Facebook.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Facebook.dll": {} + } + }, + "Microsoft.AspNet.Authentication.JwtBearer/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "2.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Authentication.JwtBearer.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Authentication.JwtBearer.dll": {} + } + }, + "Microsoft.AspNet.Authentication.OAuth/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Twitter.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Twitter.dll": {} + } + }, + "Microsoft.AspNet.Authorization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authorization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authorization.dll": {} + } + }, + "Microsoft.AspNet.Cors/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cors.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cors.dll": {} + } + }, + "Microsoft.AspNet.Cryptography.Internal/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cryptography.Internal.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cryptography.Internal.dll": {} + } + }, + "Microsoft.AspNet.Cryptography.KeyDerivation/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cryptography.Internal": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.dll": {} + } + }, + "Microsoft.AspNet.DataProtection/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cryptography.Internal": "1.0.0-rc1-final", + "Microsoft.AspNet.DataProtection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Security", + "System.Xml", + "System.Xml.Linq" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.dll": {} + } + }, + "Microsoft.AspNet.DataProtection.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.DataProtection.SystemWeb/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Configuration", + "System.Core", + "System.Security", + "System.Web" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Diagnostics.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics.Entity/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Configuration", + "System.Core", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.Entity.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.Entity.dll": {} + } + }, + "Microsoft.AspNet.FileProviders.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.FileProviders.Physical/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.FileProviders.Physical.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.FileProviders.Physical.dll": {} + } + }, + "Microsoft.AspNet.Hosting/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Server.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Hosting.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Hosting.dll": {} + } + }, + "Microsoft.AspNet.Hosting.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Hosting.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Hosting.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Hosting.Server.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Html.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Html.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Html.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Http/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.dll": {} + } + }, + "Microsoft.AspNet.Http.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Http.Extensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Extensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Extensions.dll": {} + } + }, + "Microsoft.AspNet.Http.Features/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Features.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Features.dll": {} + } + }, + "Microsoft.AspNet.Identity/3.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final", + "Microsoft.AspNet.Cryptography.KeyDerivation": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Identity.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Identity.dll": {} + } + }, + "Microsoft.AspNet.Identity.EntityFramework/3.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.AspNet.Identity": "3.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Identity.EntityFramework.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Identity.EntityFramework.dll": {} + } + }, + "Microsoft.AspNet.IISPlatformHandler/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.IISPlatformHandler.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.IISPlatformHandler.dll": {} + } + }, + "Microsoft.AspNet.JsonPatch/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.JsonPatch.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.JsonPatch.dll": {} + } + }, + "Microsoft.AspNet.Localization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Globalization.CultureInfoCache": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Localization.dll": {} + } + }, + "Microsoft.AspNet.Mvc/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.ApiExplorer": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Cors": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.DataAnnotations": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Formatters.Json": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Localization": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.ViewFeatures": "6.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Abstractions/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Routing": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Mvc.ApiExplorer/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Core/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authorization": "1.0.0-rc1-final", + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Abstractions": "6.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.MemoryPool": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Core.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Core.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Cors/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cors": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Cors.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Cors.dll": {} + } + }, + "Microsoft.AspNet.Mvc.DataAnnotations/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Microsoft.Extensions.Localization": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.ComponentModel.DataAnnotations", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Formatters.Json/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.JsonPatch": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Localization/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Localization": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Localization.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Razor/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Razor.Host": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.ViewFeatures": "6.0.0-rc1-final", + "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor.Runtime.Precompilation": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Common": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.IO", + "System.Runtime", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Razor.Host/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.dll": {} + } + }, + "Microsoft.AspNet.Mvc.TagHelpers/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.dll": {} + } + }, + "Microsoft.AspNet.Mvc.ViewFeatures/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Antiforgery": "1.0.0-rc1-final", + "Microsoft.AspNet.Diagnostics.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Html.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.DataAnnotations": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Formatters.Json": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.dll": {} + } + }, + "Microsoft.AspNet.Owin/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Owin.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Owin.dll": {} + } + }, + "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.dll": {} + } + }, + "Microsoft.AspNet.Razor/4.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.dll": {} + } + }, + "Microsoft.AspNet.Razor.Runtime/4.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Html.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor": "4.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Xml", + "System.Xml.Linq" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.dll": {} + } + }, + "Microsoft.AspNet.Razor.Runtime.Precompilation/4.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.dll": {} + } + }, + "Microsoft.AspNet.Routing/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Routing.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Routing.dll": {} + } + }, + "Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "System.Numerics.Vectors": "4.1.1-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Server.Kestrel.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Server.Kestrel.dll": {} + } + }, + "Microsoft.AspNet.Server.WebListener/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final", + "Microsoft.Net.Http.Server": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Server.WebListener.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Server.WebListener.dll": {} + } + }, + "Microsoft.AspNet.Session/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Session.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Session.dll": {} + } + }, + "Microsoft.AspNet.SignalR.Core/2.2.0": { + "type": "package", + "dependencies": { + "Microsoft.Owin": "2.1.0", + "Microsoft.Owin.Security": "2.1.0", + "Newtonsoft.Json": "6.0.4", + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.AspNet.SignalR.Core.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.AspNet.SignalR.Core.dll": {} + } + }, + "Microsoft.AspNet.SignalR.JS/2.2.0": { + "type": "package", + "dependencies": { + "jQuery": "1.6.4" + } + }, + "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.StaticFiles.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.StaticFiles.dll": {} + } + }, + "Microsoft.AspNet.Tooling.Razor/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Tooling.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Tooling.Razor.dll": {} + } + }, + "Microsoft.AspNet.Web.Optimization/1.1.3": { + "type": "package", + "dependencies": { + "Microsoft.Web.Infrastructure": "1.0.0", + "WebGrease": "1.5.2" + }, + "compile": { + "lib/net40/System.Web.Optimization.dll": {} + }, + "runtime": { + "lib/net40/System.Web.Optimization.dll": {} + } + }, + "Microsoft.AspNet.WebSockets.Protocol/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebSockets.Protocol.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebSockets.Protocol.dll": {} + } + }, + "Microsoft.AspNet.WebSockets.Server/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebSockets.Protocol": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebSockets.Server.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebSockets.Server.dll": {} + } + }, + "Microsoft.AspNet.WebUtilities/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebUtilities.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebUtilities.dll": {} + } + }, + "Microsoft.AspNetCore.Authentication.OAuth/0.0.1-alpha": { + "type": "package" + }, + "Microsoft.CodeAnalysis.Analyzers/1.0.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ] + }, + "Microsoft.CodeAnalysis.Common/1.1.0-rc1-20151109-01": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "[1.0.0, 1.2.0)", + "System.Collections.Immutable": "1.1.37", + "System.Reflection.Metadata": "1.1.0" + }, + "compile": { + "lib/net45/Microsoft.CodeAnalysis.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.CodeAnalysis.dll": {} + } + }, + "Microsoft.CodeAnalysis.CSharp/1.1.0-rc1-20151109-01": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[1.1.0-rc1-20151109-01]" + }, + "compile": { + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll": {} } }, "Microsoft.Dnx.Compilation.Abstractions/1.0.0-rc1-final": { @@ -2841,6 +5627,2843 @@ "lib/WebGrease.dll": {} } }, + "Yavsc.Api/1.0.0": { + "type": "project", + "framework": ".NETFramework,Version=v4.5.1", + "dependencies": { + "EntityFramework.Commands": "7.0.0-rc1", + "EntityFramework.Core": "7.0.0-rc1", + "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1", + "EntityFramework.Relational": "7.0.0-rc1", + "EntityFramework7.Npgsql": "3.1.0", + "EntityFramework7.Npgsql.Design": "3.1.0", + "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1" + } + }, + "Zlib.Portable.Signed/1.11.0": { + "type": "package", + "compile": { + "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.dll": {} + }, + "runtime": { + "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.dll": {} + } + } + }, + "DNX,Version=v4.5.1/debian.8-x64": { + "Antlr/3.4.1.9004": { + "type": "package", + "compile": { + "lib/Antlr3.Runtime.dll": {} + }, + "runtime": { + "lib/Antlr3.Runtime.dll": {} + } + }, + "EntityFramework.Commands/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational.Design": "7.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/EntityFramework.Commands.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Commands.dll": {} + } + }, + "EntityFramework.Core/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Ix-Async": "1.2.5", + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Remotion.Linq": "2.0.1", + "System.Collections.Immutable": "1.1.36" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.ComponentModel.DataAnnotations", + "System.Core", + "System.Diagnostics.Debug", + "System.Diagnostics.Tools", + "System.Globalization", + "System.Linq", + "System.Linq.Expressions", + "System.Linq.Queryable", + "System.ObjectModel", + "System.Reflection", + "System.Reflection.Extensions", + "System.Resources.ResourceManager", + "System.Runtime", + "System.Runtime.Extensions", + "System.Threading" + ], + "compile": { + "lib/dnx451/EntityFramework.Core.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Core.dll": {} + } + }, + "EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/EntityFramework.MicrosoftSqlServer.dll": {} + }, + "runtime": { + "lib/net451/EntityFramework.MicrosoftSqlServer.dll": {} + } + }, + "EntityFramework.Relational/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Data", + "System.Transactions" + ], + "compile": { + "lib/net451/EntityFramework.Relational.dll": {} + }, + "runtime": { + "lib/net451/EntityFramework.Relational.dll": {} + } + }, + "EntityFramework.Relational.Design/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.ComponentModel.DataAnnotations", + "System.Core", + "System.IO", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/dnx451/EntityFramework.Relational.Design.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework.Relational.Design.dll": {} + } + }, + "EntityFramework7.Npgsql/3.1.0-rc1-3": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Npgsql": "3.1.0-alpha6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.Diagnostics.Contracts", + "System.Linq.Expressions", + "System.Reflection", + "System.Runtime" + ], + "compile": { + "lib/dnx451/EntityFramework7.Npgsql.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework7.Npgsql.dll": {} + } + }, + "EntityFramework7.Npgsql.Design/3.1.0-rc1-5": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "EntityFramework.Relational": "7.0.0-rc1-final", + "EntityFramework.Relational.Design": "7.0.0-rc1-final", + "EntityFramework7.Npgsql": "3.1.0-rc1-3", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Npgsql": "3.1.0-alpha6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.Diagnostics.Contracts", + "System.Linq.Expressions", + "System.Reflection", + "System.Runtime" + ], + "compile": { + "lib/dnx451/EntityFramework7.Npgsql.Design.dll": {} + }, + "runtime": { + "lib/dnx451/EntityFramework7.Npgsql.Design.dll": {} + } + }, + "Google.Apis/1.11.1": { + "type": "package", + "dependencies": { + "Google.Apis.Core": "1.11.1", + "log4net": "2.0.3", + "Zlib.Portable.Signed": "1.11.0" + }, + "compile": { + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} + }, + "runtime": { + "lib/net45/Google.Apis.PlatformServices.dll": {}, + "lib/net45/Google.Apis.dll": {} + } + }, + "Google.Apis.Core/1.11.1": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "7.0.1" + }, + "compile": { + "lib/net45/Google.Apis.Core.dll": {} + }, + "runtime": { + "lib/net45/Google.Apis.Core.dll": {} + } + }, + "Ix-Async/1.2.5": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "lib/net45/System.Interactive.Async.dll": {} + }, + "runtime": { + "lib/net45/System.Interactive.Async.dll": {} + } + }, + "jQuery/1.6.4": { + "type": "package" + }, + "log4net/2.0.3": { + "type": "package", + "compile": { + "lib/net40-full/log4net.dll": {} + }, + "runtime": { + "lib/net40-full/log4net.dll": {} + } + }, + "MailKit/1.3.0-beta7": { + "type": "package", + "dependencies": { + "MimeKit": "1.3.0-beta7" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "System.Data" + ], + "compile": { + "lib/net451/MailKit.dll": {} + }, + "runtime": { + "lib/net451/MailKit.dll": {} + } + }, + "MarkdownDeep-av.NET/1.5.2": { + "type": "package", + "compile": { + "lib/net451/MarkdownDeep.dll": {} + }, + "runtime": { + "lib/net451/MarkdownDeep.dll": {} + } + }, + "Microsoft.AspNet.Antiforgery/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Antiforgery.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Antiforgery.dll": {} + } + }, + "Microsoft.AspNet.Authentication/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Cookies/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Cookies.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Cookies.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Facebook/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication.OAuth": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Facebook.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Facebook.dll": {} + } + }, + "Microsoft.AspNet.Authentication.JwtBearer/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "2.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Authentication.JwtBearer.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Authentication.JwtBearer.dll": {} + } + }, + "Microsoft.AspNet.Authentication.OAuth/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} + } + }, + "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authentication.Twitter.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authentication.Twitter.dll": {} + } + }, + "Microsoft.AspNet.Authorization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Authorization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Authorization.dll": {} + } + }, + "Microsoft.AspNet.Cors/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cors.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cors.dll": {} + } + }, + "Microsoft.AspNet.Cryptography.Internal/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cryptography.Internal.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cryptography.Internal.dll": {} + } + }, + "Microsoft.AspNet.Cryptography.KeyDerivation/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cryptography.Internal": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.dll": {} + } + }, + "Microsoft.AspNet.DataProtection/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cryptography.Internal": "1.0.0-rc1-final", + "Microsoft.AspNet.DataProtection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Security", + "System.Xml", + "System.Xml.Linq" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.dll": {} + } + }, + "Microsoft.AspNet.DataProtection.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.DataProtection.SystemWeb/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Configuration", + "System.Core", + "System.Security", + "System.Web" + ], + "compile": { + "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Diagnostics.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Diagnostics.Entity/7.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Configuration", + "System.Core", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Diagnostics.Entity.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Diagnostics.Entity.dll": {} + } + }, + "Microsoft.AspNet.FileProviders.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.FileProviders.Physical/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.FileProviders.Physical.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.FileProviders.Physical.dll": {} + } + }, + "Microsoft.AspNet.Hosting/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Server.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Hosting.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Hosting.dll": {} + } + }, + "Microsoft.AspNet.Hosting.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Hosting.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Hosting.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Hosting.Server.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Html.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Html.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Html.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Http/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebUtilities": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.dll": {} + } + }, + "Microsoft.AspNet.Http.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Features": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Http.Extensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Extensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Extensions.dll": {} + } + }, + "Microsoft.AspNet.Http.Features/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Http.Features.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Http.Features.dll": {} + } + }, + "Microsoft.AspNet.Identity/3.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final", + "Microsoft.AspNet.Cryptography.KeyDerivation": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Identity.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Identity.dll": {} + } + }, + "Microsoft.AspNet.Identity.EntityFramework/3.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Relational": "7.0.0-rc1-final", + "Microsoft.AspNet.Identity": "3.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Identity.EntityFramework.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Identity.EntityFramework.dll": {} + } + }, + "Microsoft.AspNet.IISPlatformHandler/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.IISPlatformHandler.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.IISPlatformHandler.dll": {} + } + }, + "Microsoft.AspNet.JsonPatch/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.JsonPatch.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.JsonPatch.dll": {} + } + }, + "Microsoft.AspNet.Localization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Globalization.CultureInfoCache": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Localization.dll": {} + } + }, + "Microsoft.AspNet.Mvc/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.ApiExplorer": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Cors": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.DataAnnotations": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Formatters.Json": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Localization": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.ViewFeatures": "6.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Abstractions/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Routing": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Abstractions.dll": {} + } + }, + "Microsoft.AspNet.Mvc.ApiExplorer/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Core/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Authorization": "1.0.0-rc1-final", + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Abstractions": "6.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.MemoryPool": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "System.Diagnostics.DiagnosticSource": "4.0.0-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Core.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Core.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Cors/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Cors": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Cors.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Cors.dll": {} + } + }, + "Microsoft.AspNet.Mvc.DataAnnotations/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Microsoft.Extensions.Localization": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.ComponentModel.DataAnnotations", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Formatters.Json/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.JsonPatch": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Localization/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Localization": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Localization.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Razor/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Razor.Host": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.ViewFeatures": "6.0.0-rc1-final", + "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor.Runtime.Precompilation": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Common": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections", + "System.Core", + "System.IO", + "System.Runtime", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.dll": {} + } + }, + "Microsoft.AspNet.Mvc.Razor.Host/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.dll": {} + } + }, + "Microsoft.AspNet.Mvc.TagHelpers/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc1-final", + "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final", + "Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.dll": {} + } + }, + "Microsoft.AspNet.Mvc.ViewFeatures/6.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Antiforgery": "1.0.0-rc1-final", + "Microsoft.AspNet.Diagnostics.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Html.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.DataAnnotations": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.Formatters.Json": "6.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.dll": {} + } + }, + "Microsoft.AspNet.Owin/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Owin.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Owin.dll": {} + } + }, + "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.dll": {} + } + }, + "Microsoft.AspNet.Razor/4.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.dll": {} + } + }, + "Microsoft.AspNet.Razor.Runtime/4.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Html.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Razor": "4.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Xml", + "System.Xml.Linq" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.dll": {} + } + }, + "Microsoft.AspNet.Razor.Runtime.Precompilation/4.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.dll": {} + } + }, + "Microsoft.AspNet.Routing/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Routing.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Routing.dll": {} + } + }, + "Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "System.Numerics.Vectors": "4.1.1-beta-23516" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Server.Kestrel.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Server.Kestrel.dll": {} + } + }, + "Microsoft.AspNet.Server.WebListener/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Net.Http.Headers": "1.0.0-rc1-final", + "Microsoft.Net.Http.Server": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.AspNet.Server.WebListener.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.AspNet.Server.WebListener.dll": {} + } + }, + "Microsoft.AspNet.Session/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Session.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Session.dll": {} + } + }, + "Microsoft.AspNet.SignalR.Core/2.2.0": { + "type": "package", + "dependencies": { + "Microsoft.Owin": "2.1.0", + "Microsoft.Owin.Security": "2.1.0", + "Newtonsoft.Json": "6.0.4", + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.AspNet.SignalR.Core.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.AspNet.SignalR.Core.dll": {} + } + }, + "Microsoft.AspNet.SignalR.JS/2.2.0": { + "type": "package", + "dependencies": { + "jQuery": "1.6.4" + } + }, + "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-rc1-final", + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.StaticFiles.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.StaticFiles.dll": {} + } + }, + "Microsoft.AspNet.Tooling.Razor/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor.Runtime": "4.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.Tooling.Razor.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.Tooling.Razor.dll": {} + } + }, + "Microsoft.AspNet.Web.Optimization/1.1.3": { + "type": "package", + "dependencies": { + "Microsoft.Web.Infrastructure": "1.0.0", + "WebGrease": "1.5.2" + }, + "compile": { + "lib/net40/System.Web.Optimization.dll": {} + }, + "runtime": { + "lib/net40/System.Web.Optimization.dll": {} + } + }, + "Microsoft.AspNet.WebSockets.Protocol/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebSockets.Protocol.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebSockets.Protocol.dll": {} + } + }, + "Microsoft.AspNet.WebSockets.Server/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", + "Microsoft.AspNet.WebSockets.Protocol": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebSockets.Server.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebSockets.Server.dll": {} + } + }, + "Microsoft.AspNet.WebUtilities/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.AspNet.WebUtilities.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.AspNet.WebUtilities.dll": {} + } + }, + "Microsoft.AspNetCore.Authentication.OAuth/0.0.1-alpha": { + "type": "package" + }, + "Microsoft.CodeAnalysis.Analyzers/1.0.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ] + }, + "Microsoft.CodeAnalysis.Common/1.1.0-rc1-20151109-01": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "[1.0.0, 1.2.0)", + "System.Collections.Immutable": "1.1.37", + "System.Reflection.Metadata": "1.1.0" + }, + "compile": { + "lib/net45/Microsoft.CodeAnalysis.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.CodeAnalysis.dll": {} + } + }, + "Microsoft.CodeAnalysis.CSharp/1.1.0-rc1-20151109-01": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[1.1.0-rc1-20151109-01]" + }, + "compile": { + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.CodeAnalysis.CSharp.dll": {} + } + }, + "Microsoft.Dnx.Compilation.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.Abstractions.dll": {} + } + }, + "Microsoft.Dnx.Compilation.CSharp.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "1.1.0-rc1-20151109-01", + "Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.dll": {} + } + }, + "Microsoft.Dnx.Compilation.CSharp.Common/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "1.1.0-rc1-20151109-01", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Runtime" + ], + "compile": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.dll": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Caching.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Caching.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Caching.Memory/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Caching.Memory.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Caching.Memory.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.CodeGeneration.Core": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.EntityFramework": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.Core/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Core.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Core.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.EntityFramework/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "EntityFramework.Core": "7.0.0-rc1-final", + "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Core": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Text.Encoding" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.EntityFramework.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.EntityFramework.dll": {} + } + }, + "Microsoft.Extensions.CodeGeneration.Templating/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.Razor": "4.0.0-rc1-final", + "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.IO", + "System.Runtime", + "System.Text.Encoding", + "System.Threading.Tasks" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Templating.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGeneration.Templating.dll": {} + } + }, + "Microsoft.Extensions.CodeGenerators.Mvc/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.CodeGeneration": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.EntityFramework": "1.0.0-rc1-final", + "Microsoft.Extensions.CodeGeneration.Templating": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Extensions.CodeGenerators.Mvc.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Extensions.CodeGenerators.Mvc.dll": {} + } + }, + "Microsoft.Extensions.Configuration/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Binder.dll": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.CommandLine.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.CommandLine.dll": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.FileProviderExtensions/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.AspNet.FileProviders.Physical": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.FileProviderExtensions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.FileProviderExtensions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Json/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc1-final", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.Json.dll": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.DependencyInjection.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll": {} + } + }, + "Microsoft.Extensions.Globalization.CultureInfoCache/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.dll": {} + } + }, + "Microsoft.Extensions.Localization/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Localization.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Localization.dll": {} + } + }, + "Microsoft.Extensions.Localization.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Localization.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Localization.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Collections.Concurrent", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging.Console/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Console.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Console.dll": {} + } + }, + "Microsoft.Extensions.Logging.Debug/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Logging.Debug.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Logging.Debug.dll": {} + } + }, + "Microsoft.Extensions.MemoryPool/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.MemoryPool.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.MemoryPool.dll": {} + } + }, + "Microsoft.Extensions.Options/0.0.1-alpha": { + "type": "package" + }, + "Microsoft.Extensions.OptionsModel/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc1-final", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.OptionsModel.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.OptionsModel.dll": {} + } + }, + "Microsoft.Extensions.PlatformAbstractions/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll": {} + } + }, + "Microsoft.Extensions.Primitives/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.Primitives.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.Primitives.dll": {} + } + }, + "Microsoft.Extensions.WebEncoders/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", + "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.WebEncoders.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.WebEncoders.dll": {} + } + }, + "Microsoft.Extensions.WebEncoders.Core/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Extensions.WebEncoders.Core.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Extensions.WebEncoders.Core.dll": {} + } + }, + "Microsoft.Framework.Configuration/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.dll": {} + } + }, + "Microsoft.Framework.Configuration.Abstractions/1.0.0-beta8": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Framework.Configuration.Binder/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Binder.dll": {} + } + }, + "Microsoft.Framework.Configuration.FileExtensions/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.FileExtensions.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.FileExtensions.dll": {} + } + }, + "Microsoft.Framework.Configuration.Json/1.0.0-beta8": { + "type": "package", + "dependencies": { + "Microsoft.Framework.Configuration": "1.0.0-beta8", + "Microsoft.Framework.Configuration.FileExtensions": "1.0.0-beta8", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Configuration.Json.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Configuration.Json.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel/1.0.0-beta4": { + "type": "package", + "dependencies": { + "Microsoft.Framework.ConfigurationModel.Interfaces": "1.0.0-beta4", + "Microsoft.Framework.Runtime.Interfaces": "1.0.0-beta4" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel.Interfaces/1.0.0-beta4": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Interfaces.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Interfaces.dll": {} + } + }, + "Microsoft.Framework.ConfigurationModel.Json/1.0.0-beta4": { + "type": "package", + "dependencies": { + "Microsoft.Framework.ConfigurationModel": "1.0.0-beta4", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} + } + }, + "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/dnx451/Microsoft.Framework.Runtime.Interfaces.dll": {} + }, + "runtime": { + "lib/dnx451/Microsoft.Framework.Runtime.Interfaces.dll": {} + } + }, + "Microsoft.IdentityModel.Logging/1.0.0-rc1-211161024": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Logging.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Logging.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols/2.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "System.IdentityModel.Tokens.Jwt": "5.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Net.Http" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Protocols.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Protocols.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/2.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "2.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + } + }, + "Microsoft.Net.Http.Headers/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.Http.Headers.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.Http.Headers.dll": {} + } + }, + "Microsoft.Net.Http.Server/1.0.0-rc1-final": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final", + "Microsoft.Extensions.Primitives": "1.0.0-rc1-final", + "Microsoft.Net.WebSockets": "1.0.0-rc1-final" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.Http.Server.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.Http.Server.dll": {} + } + }, + "Microsoft.Net.WebSockets/1.0.0-rc1-final": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/Microsoft.Net.WebSockets.dll": {} + }, + "runtime": { + "lib/net451/Microsoft.Net.WebSockets.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23516": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Targets": "1.0.1-beta-23516" + } + }, + "Microsoft.NETCore.Targets/1.0.1-beta-23516": { + "type": "package" + }, + "Microsoft.Owin/2.1.0": { + "type": "package", + "dependencies": { + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.Owin.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.Owin.dll": {} + } + }, + "Microsoft.Owin.Security/2.1.0": { + "type": "package", + "dependencies": { + "Microsoft.Owin": "2.1.0", + "Owin": "1.0.0" + }, + "compile": { + "lib/net45/Microsoft.Owin.Security.dll": {} + }, + "runtime": { + "lib/net45/Microsoft.Owin.Security.dll": {} + } + }, + "Microsoft.Web.Infrastructure/1.0.0": { + "type": "package", + "compile": { + "lib/net40/Microsoft.Web.Infrastructure.dll": {} + }, + "runtime": { + "lib/net40/Microsoft.Web.Infrastructure.dll": {} + } + }, + "MimeKit/1.3.0-beta7": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core", + "System.Data", + "System.Security" + ], + "compile": { + "lib/net451/BouncyCastle.dll": {}, + "lib/net451/MimeKit.dll": {} + }, + "runtime": { + "lib/net451/BouncyCastle.dll": {}, + "lib/net451/MimeKit.dll": {} + } + }, + "Newtonsoft.Json/7.0.1": { + "type": "package", + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, + "Npgsql/3.1.0-alpha6": { + "type": "package", + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net45/Npgsql.dll": {} + }, + "runtime": { + "lib/net45/Npgsql.dll": {} + } + }, + "Owin/1.0.0": { + "type": "package", + "compile": { + "lib/net40/Owin.dll": {} + }, + "runtime": { + "lib/net40/Owin.dll": {} + } + }, + "PayPalButtonManagerSDK/2.10.109": { + "type": "package", + "dependencies": { + "PayPalCoreSDK": "1.7.0" + }, + "compile": { + "lib/net20/PayPalButtonManagerSDK.dll": {} + }, + "runtime": { + "lib/net20/PayPalButtonManagerSDK.dll": {} + } + }, + "PayPalCoreSDK/1.7.1": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "7.0.1" + }, + "compile": { + "lib/net451/PayPalCoreSDK.dll": {} + }, + "runtime": { + "lib/net451/PayPalCoreSDK.dll": {} + } + }, + "Remotion.Linq/2.0.1": { + "type": "package", + "compile": { + "lib/net45/Remotion.Linq.dll": {} + }, + "runtime": { + "lib/net45/Remotion.Linq.dll": {} + } + }, + "System.Collections/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Collections.Immutable/1.1.37": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Diagnostics.Debug": "4.0.0", + "System.Globalization": "4.0.0", + "System.Linq": "4.0.0", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Immutable.dll": {} + } + }, + "System.Diagnostics.Debug/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.0.0-beta-23516": { + "type": "package", + "dependencies": { + "System.Diagnostics.Tracing": "4.0.0", + "System.Runtime": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet5.2/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/dotnet5.2/System.Diagnostics.DiagnosticSource.dll": {} + } + }, + "System.Diagnostics.Tracing/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Globalization/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.IdentityModel.Tokens/5.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "1.0.0-rc1-211161024", + "Newtonsoft.Json": "6.0.6" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core", + "System.Xml" + ], + "compile": { + "lib/net451/System.IdentityModel.Tokens.dll": {} + }, + "runtime": { + "lib/net451/System.IdentityModel.Tokens.dll": {} + } + }, + "System.IdentityModel.Tokens.Jwt/5.0.0-rc1-211161024": { + "type": "package", + "dependencies": { + "System.IdentityModel.Tokens": "5.0.0-rc1-211161024" + }, + "frameworkAssemblies": [ + "Microsoft.CSharp", + "mscorlib", + "System", + "System.Core" + ], + "compile": { + "lib/net451/System.IdentityModel.Tokens.Jwt.dll": {} + }, + "runtime": { + "lib/net451/System.IdentityModel.Tokens.Jwt.dll": {} + } + }, + "System.IO/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Linq/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Numerics.Vectors/4.1.1-beta-23516": { + "type": "package", + "compile": { + "lib/portable-net45+win8/System.Numerics.Vectors.dll": {} + }, + "runtime": { + "lib/portable-net45+win8/System.Numerics.Vectors.dll": {} + } + }, + "System.Reflection/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Metadata/1.1.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.0", + "System.Collections.Immutable": "1.1.37", + "System.Diagnostics.Debug": "4.0.0", + "System.IO": "4.0.0", + "System.Reflection": "4.0.0", + "System.Reflection.Extensions": "4.0.0", + "System.Reflection.Primitives": "4.0.0", + "System.Resources.ResourceManager": "4.0.0", + "System.Runtime": "4.0.0", + "System.Runtime.Extensions": "4.0.0", + "System.Runtime.InteropServices": "4.0.0", + "System.Text.Encoding": "4.0.0", + "System.Text.Encoding.Extensions": "4.0.0", + "System.Threading": "4.0.0" + }, + "compile": { + "lib/dotnet5.2/System.Reflection.Metadata.dll": {} + }, + "runtime": { + "lib/dotnet5.2/System.Reflection.Metadata.dll": {} + } + }, + "System.Reflection.Primitives/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Resources.ResourceManager/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.InteropServices/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding.Extensions/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading/4.0.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "WebGrease/1.5.2": { + "type": "package", + "dependencies": { + "Antlr": "3.4.1.9004", + "Newtonsoft.Json": "5.0.4" + }, + "compile": { + "lib/WebGrease.dll": {} + }, + "runtime": { + "lib/WebGrease.dll": {} + } + }, + "Yavsc.Api/1.0.0": { + "type": "project", + "framework": ".NETFramework,Version=v4.5.1", + "dependencies": { + "EntityFramework.Commands": "7.0.0-rc1", + "EntityFramework.Core": "7.0.0-rc1", + "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1", + "EntityFramework.Relational": "7.0.0-rc1", + "EntityFramework7.Npgsql": "3.1.0", + "EntityFramework7.Npgsql.Design": "3.1.0", + "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1" + } + }, "Zlib.Portable.Signed/1.11.0": { "type": "package", "compile": { @@ -2853,6 +8476,10 @@ } }, "libraries": { + "Yavsc.Api/1.0.0": { + "type": "project", + "path": "../Yavsc.Api/project.json" + }, "Antlr/3.4.1.9004": { "type": "package", "sha512": "c1S+HBE+KYA5EBxtn25LEK02hHPH/tDQ6RviUTTCJpZIPoputtn8ArsQJy9lVJWZOnw37ufByO2Fmf1M8wpr8Q==", @@ -2954,21 +8581,6 @@ "lib/netcore50/_._" ] }, - "EntityFramework.Sqlite/7.0.0-rc1-final": { - "type": "package", - "sha512": "B+h4HHUnCSN/d4DIxW89B6q4efcZzQjajQb1yrlALEeZuCBDIzO0nrEdRZsRSNqJaNzmxRu/OsYqrZVOORUrGw==", - "files": [ - "EntityFramework.Sqlite.7.0.0-rc1-final.nupkg", - "EntityFramework.Sqlite.7.0.0-rc1-final.nupkg.sha512", - "EntityFramework.Sqlite.nuspec", - "lib/dotnet5.4/EntityFramework.Sqlite.dll", - "lib/dotnet5.4/EntityFramework.Sqlite.xml", - "lib/net451/EntityFramework.Sqlite.dll", - "lib/net451/EntityFramework.Sqlite.xml", - "lib/netcore50/EntityFramework.Sqlite.dll", - "lib/netcore50/EntityFramework.Sqlite.xml" - ] - }, "EntityFramework7.Npgsql/3.1.0-rc1-3": { "type": "package", "sha512": "VW/pz4Luixgc9UuAXPP9vzPIrrw9sHD4ozd2HUzeI3Sd4RdCgSFQT+B3HhPw/+JGKcdAnIQ4D5/Llk43fH07hw==", @@ -4001,28 +9613,6 @@ "ThirdPartyNotices.rtf" ] }, - "Microsoft.Data.Sqlite/1.0.0-rc1-final": { - "type": "package", - "sha512": "54F32OBWIWMIpeKggCMEX+Bp/TiAiKzBaQ4z+IRr61eNSnJhxMnLE/QWDs5YbCtbDlWIB4+VBC1rnT8PFGCtdw==", - "files": [ - "build/net451/Microsoft.Data.Sqlite.props", - "build/netcore50/Microsoft.Data.Sqlite.targets", - "build/netcore50/win10-arm/native/sqlite3.dll", - "build/netcore50/win10-x64/native/sqlite3.dll", - "build/netcore50/win10-x86/native/sqlite3.dll", - "lib/dotnet5.4/Microsoft.Data.Sqlite.dll", - "lib/dotnet5.4/Microsoft.Data.Sqlite.xml", - "lib/net451/Microsoft.Data.Sqlite.dll", - "lib/net451/Microsoft.Data.Sqlite.xml", - "lib/netcore50/Microsoft.Data.Sqlite.dll", - "lib/netcore50/Microsoft.Data.Sqlite.xml", - "Microsoft.Data.Sqlite.1.0.0-rc1-final.nupkg", - "Microsoft.Data.Sqlite.1.0.0-rc1-final.nupkg.sha512", - "Microsoft.Data.Sqlite.nuspec", - "runtimes/win7-x64/native/sqlite3.dll", - "runtimes/win7-x86/native/sqlite3.dll" - ] - }, "Microsoft.Dnx.Compilation.Abstractions/1.0.0-rc1-final": { "type": "package", "sha512": "kg3kR7H12Bs46TiuF7YT8A3SNXehhBcwsArIMQIH2ecXGkg5MPWDl2OR6bnQu6k0OMu9QUiv1oiwC9yU7rHWfw==", @@ -5785,11 +11375,11 @@ }, "projectFileDependencyGroups": { "": [ + "Yavsc.Api >= 1.0.0", "EntityFramework.Commands >= 7.0.0-rc1-*", "EntityFramework.Core >= 7.0.0-rc1-*", "EntityFramework.MicrosoftSqlServer >= 7.0.0-rc1-*", "EntityFramework.Relational >= 7.0.0-rc1-*", - "EntityFramework.Sqlite >= 7.0.0-rc1-*", "EntityFramework7.Npgsql >= 3.1.0-*", "EntityFramework7.Npgsql.Design >= 3.1.0-*", "Google.Apis.Core >= 1.11.1", diff --git a/build/approot/src/Yavsc/ApiController/AccountController.cs b/build/approot/src/Yavsc/ApiController/AccountController.cs index 1c197a94..2f6e281f 100644 --- a/build/approot/src/Yavsc/ApiController/AccountController.cs +++ b/build/approot/src/Yavsc/ApiController/AccountController.cs @@ -7,6 +7,7 @@ using Microsoft.AspNet.Mvc; using Yavsc.ViewModels.Account; using System.Security.Claims; using Microsoft.Extensions.Logging; +using Yavsc.Models.Auth; namespace Yavsc.WebApi.Controllers { @@ -118,5 +119,18 @@ namespace Yavsc.WebApi.Controllers base.Dispose(disposing); } + [HttpGet("~/api/me")] + public async Task Me () + { + if (User==null) + return new BadRequestObjectResult( + new { error = "user not found" }); + var uid = User.GetUserId(); + if (uid == null) + return new BadRequestObjectResult( + new { error = "user not identified" }); + return Ok(new Me(await UserManager.FindByIdAsync(uid))); + } + } } diff --git a/build/approot/src/Yavsc/ApiController/GCMController.cs b/build/approot/src/Yavsc/ApiController/GCMController.cs index a2bbec9e..85aede96 100644 --- a/build/approot/src/Yavsc/ApiController/GCMController.cs +++ b/build/approot/src/Yavsc/ApiController/GCMController.cs @@ -1,9 +1,11 @@ using System.Linq; +using System.Security.Claims; using Microsoft.AspNet.Authorization; using Microsoft.AspNet.Mvc; using Microsoft.Extensions.Logging; using Yavsc.Models; +[Authorize,Route("~/api/gcm")] public class GCMController : Controller { ILogger _logger; ApplicationDbContext _context; @@ -15,9 +17,14 @@ public class GCMController : Controller { _context = context; } - [Authorize] - public void Register (GoogleCloudMobileDeclaration declaration) + public IActionResult Register (GoogleCloudMobileDeclaration declaration) { + if (declaration.DeviceOwnerId!=null) + if (User.GetUserId() != declaration.DeviceOwnerId) + return new BadRequestObjectResult( + new { error = "you're not allowed to register for another user" }  + ); + declaration.DeviceOwnerId = User.GetUserId(); if (_context.GCMDevices.Any(d => d.RegistrationId == declaration.RegistrationId)) { var alreadyRegisteredDevice = _context.GCMDevices.FirstOrDefault(d => d.RegistrationId == declaration.RegistrationId); @@ -32,6 +39,7 @@ public class GCMController : Controller { _context.GCMDevices.Add(declaration); _context.SaveChanges(); } + return Ok(); } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Auth/AuthServer/IApplicationStore.cs b/build/approot/src/Yavsc/Auth/AuthServer/IApplicationStore.cs deleted file mode 100644 index 67602d59..00000000 --- a/build/approot/src/Yavsc/Auth/AuthServer/IApplicationStore.cs +++ /dev/null @@ -1,14 +0,0 @@ - -public interface IApplication -{ - string ApplicationID { get; set; } - string DisplayName { get; set; } - string RedirectUri { get; set; } - string LogoutRedirectUri { get; set; } - string Secret { get; set; } -} -public interface IApplicationStore -{ - IApplication FindApplication(string clientId); - -} \ No newline at end of file diff --git a/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerHandler.cs b/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerHandler.cs index 03989dec..25aabd1a 100644 --- a/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerHandler.cs +++ b/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerHandler.cs @@ -17,12 +17,6 @@ namespace OAuth.AspNet.AuthServer public class OAuthAuthorizationServerHandler : AuthenticationHandler { - public OAuthAuthorizationServerHandler(IApplicationStore applicationStore) - { - ApplicationStore = applicationStore; - } - - public IApplicationStore ApplicationStore { get; private set;} #region non-Public Members private AuthorizeEndpointRequest _authorizeEndpointRequest; @@ -335,7 +329,7 @@ namespace OAuth.AspNet.AuthServer { var authorizeRequest = new AuthorizeEndpointRequest(Request.Query); - var clientContext = new OAuthValidateClientRedirectUriContext(ApplicationStore,Context, Options, authorizeRequest.ClientId, authorizeRequest.RedirectUri); + var clientContext = new OAuthValidateClientRedirectUriContext(Context, Options, authorizeRequest.ClientId, authorizeRequest.RedirectUri); if (!string.IsNullOrEmpty(authorizeRequest.RedirectUri)) { @@ -423,7 +417,7 @@ namespace OAuth.AspNet.AuthServer IFormCollection form = await Request.ReadFormAsync(); - var clientContext = new OAuthValidateClientAuthenticationContext(Context, Options, form, ApplicationStore); + var clientContext = new OAuthValidateClientAuthenticationContext(Context, Options, form); await Options.Provider.ValidateClientAuthentication(clientContext); @@ -808,7 +802,7 @@ namespace OAuth.AspNet.AuthServer } } - #endregion + #endregion } } diff --git a/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerMiddleware.cs b/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerMiddleware.cs index 51421f50..571f4cd2 100644 --- a/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerMiddleware.cs +++ b/build/approot/src/Yavsc/Auth/AuthServer/OAuthAuthorizationServerMiddleware.cs @@ -1,10 +1,9 @@ - -using Microsoft.AspNet.Authentication; +using Microsoft.AspNet.Authentication; using Microsoft.AspNet.Builder; using Microsoft.AspNet.DataProtection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.WebEncoders; -using System; +using Yavsc.Auth; namespace OAuth.AspNet.AuthServer { @@ -21,21 +20,8 @@ namespace OAuth.AspNet.AuthServer /// called by application code directly, instead it is added by calling the the IAppBuilder UseOAuthAuthorizationServer /// extension method. /// - public OAuthAuthorizationServerMiddleware( - RequestDelegate next, - OAuthAuthorizationServerOptions options, - ILoggerFactory loggerFactory, - IDataProtectionProvider dataProtectionProvider, - IUrlEncoder encoder, - IApplicationStore applicationStore - ) : base(next, options, loggerFactory, encoder) + public OAuthAuthorizationServerMiddleware(RequestDelegate next, OAuthAuthorizationServerOptions options, ILoggerFactory loggerFactory, IDataProtectionProvider dataProtectionProvider, IUrlEncoder encoder) : base(next, options, loggerFactory, encoder) { - if (applicationStore == null ) - { - throw new InvalidOperationException("No application store"); - } - ApplicationStore = applicationStore; - if (Options.Provider == null) { Options.Provider = new OAuthAuthorizationServerProvider(); @@ -57,8 +43,11 @@ namespace OAuth.AspNet.AuthServer if (Options.TokenDataProtector == null) { - Options.TokenDataProtector = dataProtectionProvider.CreateProtector("OAuth.AspNet.AuthServer"); - + #if DNXCORE50 + Options.TokenDataProtector = new DataProtectionProvider(new DirectoryInfo(Environment.GetEnvironmentVariable("Temp"))).CreateProtector("OAuth.AspNet.AuthServer"); + #else + Options.TokenDataProtector = new MonoDataProtectionProvider("OAuth.AspNet.AuthServer").CreateProtector("OAuth.Data.Protector"); + #endif } if (Options.AccessTokenFormat == null) @@ -82,17 +71,15 @@ namespace OAuth.AspNet.AuthServer { Options.RefreshTokenProvider = new AuthenticationTokenProvider(); } - } - private IApplicationStore ApplicationStore { get; set; } /// /// Called by the AuthenticationMiddleware base class to create a per-request handler. /// /// A new instance of the request handler protected override AuthenticationHandler CreateHandler() { - return new OAuthAuthorizationServerHandler(ApplicationStore); + return new OAuthAuthorizationServerHandler(); } } diff --git a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs b/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs index 25127475..7685889d 100644 --- a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs +++ b/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientAuthenticationContext.cs @@ -16,14 +16,11 @@ namespace OAuth.AspNet.AuthServer /// /// /// - public OAuthValidateClientAuthenticationContext(HttpContext context, OAuthAuthorizationServerOptions options, IReadableStringCollection parameters, IApplicationStore applicationStore) : base(context, options, null) + public OAuthValidateClientAuthenticationContext(HttpContext context, OAuthAuthorizationServerOptions options, IReadableStringCollection parameters) : base(context, options, null) { Parameters = parameters; - ApplicationStore = applicationStore; } - public IApplicationStore ApplicationStore { get; private set;} - /// /// Gets the set of form parameters from the request. /// @@ -93,6 +90,7 @@ namespace OAuth.AspNet.AuthServer public bool TryGetFormCredentials(out string clientId, out string clientSecret) { clientId = Parameters[Constants.Parameters.ClientId]; + if (!string.IsNullOrEmpty(clientId)) { clientSecret = Parameters[Constants.Parameters.ClientSecret]; diff --git a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientCredentialsContext.cs b/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientCredentialsContext.cs deleted file mode 100644 index fa37f10e..00000000 --- a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientCredentialsContext.cs +++ /dev/null @@ -1,14 +0,0 @@ - - -public class OAuthValidateClientCredentialsContext {  - public OAuthValidateClientCredentialsContext(string clientId,string clientSecret,IApplicationStore applicationStore) - { - ClientId = clientId; - ClientSecret = clientSecret; - ApplicationStore = applicationStore; - } - public string ClientId { get; private set; } - public string ClientSecret { get; private set; } - public IApplicationStore ApplicationStore { get; private set; } - -} \ No newline at end of file diff --git a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientRedirectUriContext.cs b/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientRedirectUriContext.cs index b0e10efd..1561cd6e 100644 --- a/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientRedirectUriContext.cs +++ b/build/approot/src/Yavsc/Auth/AuthServer/OAuthValidateClientRedirectUriContext.cs @@ -17,10 +17,9 @@ namespace OAuth.AspNet.AuthServer /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "3#", Justification = "redirect_uri is a string parameter")] - public OAuthValidateClientRedirectUriContext(IApplicationStore applicationStore, HttpContext context, OAuthAuthorizationServerOptions options, string clientId, string redirectUri) : base(context, options, clientId) + public OAuthValidateClientRedirectUriContext(HttpContext context, OAuthAuthorizationServerOptions options, string clientId, string redirectUri) : base(context, options, clientId) { RedirectUri = redirectUri; - ApplicationStore = applicationStore; } /// @@ -29,8 +28,6 @@ namespace OAuth.AspNet.AuthServer [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "redirect_uri is a string parameter")] public string RedirectUri { get; private set; } - public IApplicationStore ApplicationStore { get; private set;} - /// /// Marks this context as validated by the application. IsValidated becomes true and HasError becomes false as a result of calling. /// diff --git a/build/approot/src/Yavsc/Auth/AuthServer/TokenEndpointRequest.cs b/build/approot/src/Yavsc/Auth/AuthServer/TokenEndpointRequest.cs index e60969c0..81ab32bc 100644 --- a/build/approot/src/Yavsc/Auth/AuthServer/TokenEndpointRequest.cs +++ b/build/approot/src/Yavsc/Auth/AuthServer/TokenEndpointRequest.cs @@ -62,6 +62,10 @@ namespace OAuth.AspNet.AuthServer Parameters = parameters, }; } + else + { + throw new ArgumentException("No grant type found in the request"); + } } /// diff --git a/build/approot/src/Yavsc/Auth/GoogleOptions.cs b/build/approot/src/Yavsc/Auth/GoogleOptions.cs index 3f151d23..32779d0a 100644 --- a/build/approot/src/Yavsc/Auth/GoogleOptions.cs +++ b/build/approot/src/Yavsc/Auth/GoogleOptions.cs @@ -33,6 +33,7 @@ namespace Yavsc.Auth Scope.Add("openid"); Scope.Add("profile"); Scope.Add("email"); + } /// @@ -40,5 +41,6 @@ namespace Yavsc.Auth /// public string AccessType { get; set; } + } } diff --git a/build/approot/src/Yavsc/Auth/MonoDataProtectionProvider.cs b/build/approot/src/Yavsc/Auth/MonoDataProtectionProvider.cs index 697a86bd..3cac58ca 100644 --- a/build/approot/src/Yavsc/Auth/MonoDataProtectionProvider.cs +++ b/build/approot/src/Yavsc/Auth/MonoDataProtectionProvider.cs @@ -2,6 +2,7 @@ using System; +using System.IO; using Microsoft.AspNet.DataProtection; namespace Yavsc.Auth { @@ -13,10 +14,14 @@ public class MonoDataProtectionProvider : IDataProtectionProvider : this(Guid.NewGuid().ToString()) { } + public MonoDataProtectionProvider(DirectoryInfo dataProtectionDirInfo) + : this(Guid.NewGuid().ToString()) + { + + } public MonoDataProtectionProvider(string appName) { if (appName == null) { throw new ArgumentNullException("appName"); } - this.appName = appName; } diff --git a/build/approot/src/Yavsc/Auth/MonoDataProtector.cs b/build/approot/src/Yavsc/Auth/MonoDataProtector.cs index 982fde15..2ed89411 100644 --- a/build/approot/src/Yavsc/Auth/MonoDataProtector.cs +++ b/build/approot/src/Yavsc/Auth/MonoDataProtector.cs @@ -29,7 +29,7 @@ namespace Yavsc.Auth { public class MonoDataProtector : IDataProtector { - private const string PRIMARY_PURPOSE = "Microsoft.Owin.Security.IDataProtector"; + private const string PRIMARY_PURPOSE = "IDataProtector"; private readonly string appName; private readonly DataProtectionScope dataProtectionScope; diff --git a/build/approot/src/Yavsc/Auth/TokenAuthOptions.cs b/build/approot/src/Yavsc/Auth/TokenAuthOptions.cs index 09c8952a..6864da37 100644 --- a/build/approot/src/Yavsc/Auth/TokenAuthOptions.cs +++ b/build/approot/src/Yavsc/Auth/TokenAuthOptions.cs @@ -1,7 +1,9 @@ +using System; using System.IdentityModel.Tokens; namespace Yavsc { + [Obsolete("Use OAuth2AppSettings instead")] public class TokenAuthOptions { /// diff --git a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationHandler.cs b/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationHandler.cs deleted file mode 100644 index 03fff72e..00000000 --- a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationHandler.cs +++ /dev/null @@ -1,147 +0,0 @@ -// -// YavscAuthenticationHandler.cs -// -// Author: -// Paul Schneider -// -// Copyright (c) 2016 GNU GPL -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . - -using System; -using System.Collections.Generic; -using System.Security.Claims; -using System.Threading.Tasks; - -namespace Yavsc.Authentication -{ - using System.Net.Http; - using System.Net.Http.Headers; - using Microsoft.AspNet.Authentication; - using Microsoft.AspNet.Authentication.OAuth; - using Microsoft.AspNet.Http; - using Microsoft.AspNet.Http.Authentication; - using Microsoft.AspNet.Http.Features.Authentication; - using Microsoft.Extensions.Logging; - using Newtonsoft.Json.Linq; - - public static class YavscAuthenticationExtensions - { - } - - class YavscAuthenticationHandler : OAuthHandler - { - private ILogger _logger; - private HttpClient _backchannel; - - public YavscAuthenticationHandler(HttpClient backchannel, ILogger logger) : base (backchannel) - { - _backchannel = backchannel; - _logger = logger; - } - - protected new async Task AuthenticateAsync(AuthenticateContext context) - { - AuthenticationProperties properties = null; - - try - { - // ASP.Net Identity requires the NameIdentitifer field to be set or it won't - // accept the external login (AuthenticationManagerExtensions.GetExternalLoginInfo) - - string code = null; - string state = null; - - IReadableStringCollection query = Request.Query; - IList values = query["code"]; - if (values != null && values.Count == 1) - { - code = values[0]; - } - values = query["state"]; - if (values != null && values.Count == 1) - { - state = values[0]; - } - - properties = Options.StateDataFormat.Unprotect(state); - if (properties == null) - { - return null; - } - - // OAuth2 10.12 CSRF - if (!ValidateCorrelationId(properties)) - { - return new AuthenticationTicket(null, properties, this.Options.AuthenticationScheme); - } - - string requestPrefix = Request.Scheme + "://" + Request.Host; - string redirectUri = requestPrefix + Request.PathBase + Options.CallbackPath; - - // Build up the body for the token request - var body = new List>(); - body.Add(new KeyValuePair("grant_type", "authorization_code")); - body.Add(new KeyValuePair("code", code)); - body.Add(new KeyValuePair("redirect_uri", redirectUri)); - body.Add(new KeyValuePair("client_id", Options.ClientId)); - body.Add(new KeyValuePair("client_secret", Options.ClientSecret)); - - // Request the token - HttpResponseMessage tokenResponse = - await _backchannel.PostAsync(Options.TokenEndpoint, new FormUrlEncodedContent(body)); - tokenResponse.EnsureSuccessStatusCode(); - string text = await tokenResponse.Content.ReadAsStringAsync(); - - // Deserializes the token response - JObject response = JObject.Parse(text); - string accessToken = response.Value("access_token"); - - if (string.IsNullOrWhiteSpace(accessToken)) - { - _logger.LogWarning("Access token was not found"); - return new AuthenticationTicket(null, properties, this.Options.AuthenticationScheme); - } - - // Get the user - HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, Options.UserInformationEndpoint); - request.Headers.Authorization = new AuthenticationHeaderValue(this.Options.AuthenticationScheme, accessToken); - HttpResponseMessage graphResponse = await _backchannel.SendAsync(request); - graphResponse.EnsureSuccessStatusCode(); - text = await graphResponse.Content.ReadAsStringAsync(); - JObject user = JObject.Parse(text); - // Read user data - - var id = new ClaimsIdentity( - Options.SignInAsAuthenticationType, - ClaimsIdentity.DefaultNameClaimType, - ClaimsIdentity.DefaultRoleClaimType); - context.Authenticated(new ClaimsPrincipal(id) - , new Dictionary(), new Dictionary{ - { "John" , (object) "Doe" } - }); - return new AuthenticationTicket(context.Principal, properties, Options.SignInAsAuthenticationType); - } - catch (Exception ex) - { - _logger.LogError("Authentication failed", ex); - return new AuthenticationTicket(null, properties, this.Options.AuthenticationScheme); - } - - } - - - } -} - diff --git a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddleware.cs b/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddleware.cs deleted file mode 100644 index 72cbf61a..00000000 --- a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddleware.cs +++ /dev/null @@ -1,102 +0,0 @@ -// -// YavscAuthenticationMiddleware.cs -// -// Author: -// Paul Schneider -// -// Copyright (c) 2016 GNU GPL -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . - - -using System; -using Microsoft.AspNet.Authentication; -using Microsoft.AspNet.Authentication.OAuth; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.DataProtection; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.OptionsModel; -using Microsoft.Extensions.WebEncoders; - -namespace Yavsc.Authentication -{ - public class YavscAuthenticationMiddleware : OAuthMiddleware - { - RequestDelegate _next; - ILogger _logger; - - public YavscAuthenticationMiddleware( - RequestDelegate next, - IDataProtectionProvider dataProtectionProvider, - ILoggerFactory loggerFactory, - UrlEncoder encoder, - IOptions sharedOptions, - YavscAuthenticationOptions options) - : base(next, dataProtectionProvider, loggerFactory, encoder, sharedOptions, options) - { - - if (next == null) - { - throw new ArgumentNullException(nameof(next)); - } - _next = next; - - if (dataProtectionProvider == null) - { - throw new ArgumentNullException(nameof(dataProtectionProvider)); - } - - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - _logger = loggerFactory.CreateLogger(); - - if (encoder == null) - { - throw new ArgumentNullException(nameof(encoder)); - } - - if (sharedOptions == null) - { - throw new ArgumentNullException(nameof(sharedOptions)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - - if(string.IsNullOrEmpty(options.SignInAsAuthenticationType)) - { - options.SignInAsAuthenticationType = sharedOptions.Value.SignInScheme; - } - - if(options.StateDataFormat == null) - { - var dataProtector = dataProtectionProvider.CreateProtector(typeof(YavscAuthenticationMiddleware).FullName, - options.AuthenticationScheme); - - options.StateDataFormat = new PropertiesDataFormat(dataProtector); - } - } - - // Called for each request, to create a handler for each request. - protected override AuthenticationHandler CreateHandler() - { - return new YavscAuthenticationHandler(this.Backchannel,_logger); - } - } -} - diff --git a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddlewareOptions.cs b/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddlewareOptions.cs deleted file mode 100644 index 030fa1be..00000000 --- a/build/approot/src/Yavsc/Auth/Yavsc/YavscAuthenticationMiddlewareOptions.cs +++ /dev/null @@ -1,62 +0,0 @@ -// -// YavscAuthenticationMiddlewareOptions.cs -// -// Author: -// Paul Schneider -// -// Copyright (c) 2016 GNU GPL -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . -using System; -using Microsoft.AspNet.Authentication.OAuth; -using Microsoft.AspNet.Http; - -namespace Yavsc.Authentication -{ - - public class YavscAuthenticationOptions: OAuthOptions - { - public YavscAuthenticationOptions() - {} - - public YavscAuthenticationOptions(string authType, string clientId, string clientSecret) - { - if (authType == null) - throw new NotSupportedException(); - Description.AuthenticationScheme = authType; - ClientId = clientId; - ClientSecret = clientSecret; - SignInAsAuthenticationType = authType; - Scope.Clear(); - } - public PathString TokenPath { get; set; } - public PathString AuthorizePath { get; set; } - - public PathString ReturnUrl { get; set; } - public PathString LoginPath { get; set; } - public PathString LogoutPath { get; set; } - - internal string AuthenticationServerUri = "https://accounts.google.com/o/oauth2/auth"; - internal string TokenServerUri = "https://accounts.google.com/o/oauth2/token"; - - private string signInAsAuthenticationType = null; - public string SignInAsAuthenticationType { get - { return signInAsAuthenticationType ; } - set { signInAsAuthenticationType = value; - ReturnUrl = new PathString("/signin-"+signInAsAuthenticationType.ToLower()); - } } - - } -} - diff --git a/build/approot/src/Yavsc/Constants.cs b/build/approot/src/Yavsc/Constants.cs index 7405d06f..fb810b7e 100644 --- a/build/approot/src/Yavsc/Constants.cs +++ b/build/approot/src/Yavsc/Constants.cs @@ -2,9 +2,28 @@ namespace Yavsc { using Yavsc.Models.Auth; - public static class Constants + public static class Constants { - public const string RememberMeCookieName = "Berme"; + public const string ApplicationName = "Yavsc", + CompanyClaimType = "https://schemas.pschneider.fr/identity/claims/Company", + UserNameRegExp = @"^[a-zA-Z][a-zA-Z0-9 ]*$", + AuthorizePath = "~/authorize", + TokenPath = "~/token", LoginPath = "~/signin", + LogoutPath = "~/signout", UserInfoPath = "~/api/me", + ApplicationAuthenticationSheme = "ServerCookie", + ExternalAuthenticationSheme= "ExternalCookie", + CompanyInfoUrl = " https://societeinfo.com/app/rest/api/v1/company/json?registration_number={0}&key={1}", + DefaultFactor = "Default", + MobileAppFactor = "Mobile Application", + EMailFactor = "Email", + SMSFactor = "SMS", + AdminGroupName = "Administrator", + BlogModeratorGroupName = "Moderator", + FrontOfficeGroupName = "FrontOffice", + UserBillsFilesDir= "Bills", + UserFilesDir = "UserFiles", + GCMNotificationUrl = "https://gcm-http.googleapis.com/gcm/send", + KeyProtectorPurpose = "OAuth.AspNet.AuthServer"; public static readonly Scope[] SiteScopes = {  new Scope { Id = "profile", Description = "Your profile informations" },   new Scope { Id = "book" , Description ="Your booking interface"},   @@ -16,34 +35,9 @@ namespace Yavsc new Scope { Id = "frontoffice" , Description ="Your front office interface" } }; - public const string CompanyInfoUrl = " https://societeinfo.com/app/rest/api/v1/company/json?registration_number={0}&key={1}"; - public const string DefaultFactor = "Default"; - public const string MobileAppFactor = "Google.clood"; - public const string EMailFactor = "Email"; - public const string SMSFactor = "Phone"; - public const string AdminGroupName = "Administrator"; - public const string BlogModeratorGroupName = "Moderator"; - public const string FrontOfficeGroupName = "FrontOffice"; - public const string UserBillsFilesDir= "Bills"; - public const string UserFilesDir = "UserFiles"; - - public const string GCMNotificationUrl = "https://gcm-http.googleapis.com/gcm/send"; + private static readonly string[] GoogleScopes = { "openid", "profile", "email" }; - public static readonly string[] GoogleCalendarScopes = { "openid", "profile", "email", "https://www.googleapis.com/auth/calendar" }; - public const string ApplicationName = "Yavsc"; - - public const string Issuer = "https://dev.pschneider.fr"; - - public const string CompanyClaimType = "https://schemas.pschneider.fr/identity/claims/Company"; - - public const string UserNameRegExp = @"^[a-zA-Z][a-zA-Z0-9 ]*$"; - - public const string AuthenticationEndPath = "/signin"; - public const string TokenEndPath = "/token"; - - public const string KeyProtectorPurpose = "OAuth.AspNet.AuthServer"; - } } diff --git a/build/approot/src/Yavsc/Controllers/AccountController.cs b/build/approot/src/Yavsc/Controllers/AccountController.cs index 78ae2ffb..269334b2 100644 --- a/build/approot/src/Yavsc/Controllers/AccountController.cs +++ b/build/approot/src/Yavsc/Controllers/AccountController.cs @@ -10,15 +10,15 @@ using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.Rendering; using Microsoft.Extensions.Logging; using Microsoft.Extensions.OptionsModel; -using Yavsc.Extensions; +using Microsoft.AspNet.Http; using Yavsc.Models; using Yavsc.Services; using Yavsc.ViewModels.Account; - +using Yavsc.Helpers; namespace Yavsc.Controllers { - [ServiceFilter(typeof(LanguageActionFilter)),AllowAnonymous] + [ServiceFilter(typeof(LanguageActionFilter)), AllowAnonymous] public class AccountController : Controller { private readonly UserManager _userManager; @@ -49,49 +49,105 @@ namespace Yavsc.Controllers _smtpSettings = smtpSettings.Value; _twilioSettings = twilioSettings.Value; _logger = loggerFactory.CreateLogger(); + } - [HttpGet("~/login")] - public IActionResult Login(string returnUrl) + [HttpGet(Constants.LoginPath)] + public ActionResult SignIn(string returnUrl = null) { - return View("SignIn", new LoginViewModel { + // Note: the "returnUrl" parameter corresponds to the endpoint the user agent + // will be redirected to after a successful authentication and not + // the redirect_uri of the requesting client application against the third + // party identity provider. + return View(new SignInViewModel + { ReturnUrl = returnUrl, ExternalProviders = HttpContext.GetExternalProviders() - }); + }); + /* Note: When using an external login provider, redirect the query : + var properties = _signInManager.ConfigureExternalAuthenticationProperties(OpenIdConnectDefaults.AuthenticationScheme, returnUrl); + return new ChallengeResult(OpenIdConnectDefaults.AuthenticationScheme, properties); + */ } - - [HttpPost("~/login")] - public async Task SignIn(LoginViewModel model) + + [HttpPost(Constants.LoginPath)] + public async Task SignIn(SignInViewModel model) { - if (ModelState.IsValid) + if (Request.Method == "POST") { - // This doesn't count login failures towards account lockout - // To enable password failures to trigger account lockout, set lockoutOnFailure: true - var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false); - if (result.Succeeded) + if (model.Provider == "LOCAL") { - return RedirectToLocal(model.ReturnUrl); - } - if (result.RequiresTwoFactor) - { - return RedirectToAction(nameof(SendCode), new { ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); - } - if (result.IsLockedOut) - { - _logger.LogWarning(2, "User account locked out."); - return View("Lockout"); + if (ModelState.IsValid) + { + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, set lockoutOnFailure: true + var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false); + + if (result.Succeeded) + { + return Redirect(model.ReturnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToAction(nameof(SendCode), new { ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); + } + if (result.IsLockedOut) + { + _logger.LogWarning(2, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid login attempt."); + model.ExternalProviders = HttpContext.GetExternalProviders(); + return View(model); + } + } + + // If we got this far, something failed, redisplay form + ModelState.AddModelError(string.Empty, "Unexpected behavior: something failed ... you could try again, or contact me ..."); } else { - ModelState.AddModelError(string.Empty, "Invalid login attempt."); - return View(model); + + // Note: the "provider" parameter corresponds to the external + // authentication provider choosen by the user agent. + if (string.IsNullOrEmpty(model.Provider)) + { + _logger.LogWarning("Provider not specified"); + return HttpBadRequest(); + } + + if (!_signInManager.GetExternalAuthenticationSchemes().Any(x => x.AuthenticationScheme == model.Provider)) + { + _logger.LogWarning($"Provider not found : {model.Provider}"); + return HttpBadRequest(); + } + + // Instruct the middleware corresponding to the requested external identity + // provider to redirect the user agent to its own authorization endpoint. + // Note: the authenticationScheme parameter must match the value configured in Startup.cs + + // Note: the "returnUrl" parameter corresponds to the endpoint the user agent + // will be redirected to after a successful authentication and not + // the redirect_uri of the requesting client application. + if (string.IsNullOrEmpty(model.ReturnUrl)) + { + _logger.LogWarning("ReturnUrl not specified"); + return HttpBadRequest(); + } + // Note: this still is not the redirect uri given to the third party provider, at building the challenge. + var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = model.ReturnUrl }); + var properties = _signInManager.ConfigureExternalAuthenticationProperties(model.Provider, redirectUrl); + // var properties = new AuthenticationProperties{RedirectUri=ReturnUrl}; + return new ChallengeResult(model.Provider, properties); + } } - - // If we got this far, something failed, redisplay form - ModelState.AddModelError(string.Empty, "Unexpected behavior: something failed ... you could try again, or contact me ..."); + model.ExternalProviders = HttpContext.GetExternalProviders(); return View(model); } + // // GET: /Account/Register [HttpGet] @@ -131,27 +187,15 @@ namespace Yavsc.Controllers // // POST: /Account/LogOff - [HttpPost] + [HttpPost(Constants.LogoutPath)] [ValidateAntiForgeryToken] public async Task LogOff(string returnUrl = null) { await _signInManager.SignOutAsync(); _logger.LogInformation(4, "User logged out."); - if (returnUrl==null) return RedirectToAction(nameof(HomeController.Index), "Home"); + if (returnUrl == null) return RedirectToAction(nameof(HomeController.Index), "Home"); return Redirect(returnUrl); } - - // - // POST: /Account/ExternalLogin - [HttpPost] - [ValidateAntiForgeryToken] - public IActionResult ExternalLogin(string provider, string returnUrl = null) - { - // Request a redirect to the external login provider. - var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }); - var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); - return new ChallengeResult(provider, properties); - } // // GET: /Account/ExternalLoginCallback @@ -161,6 +205,7 @@ namespace Yavsc.Controllers var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { + _logger.LogWarning("No external provider info found."); return Redirect("~/signin"); // RedirectToAction(nameof(OAuthController.SignIn)); } @@ -170,7 +215,7 @@ namespace Yavsc.Controllers { _logger.LogInformation(5, "User logged in with {Name} provider.", info.LoginProvider); - return RedirectToLocal(returnUrl); + return Redirect(returnUrl); } if (result.RequiresTwoFactor) { @@ -237,7 +282,7 @@ namespace Yavsc.Controllers await _signInManager.SignInAsync(user, isPersistent: false); _logger.LogInformation(6, "User created an account using {Name} provider.", info.LoginProvider); - return RedirectToLocal(returnUrl); + return Redirect(returnUrl); } } AddErrors(result); @@ -440,7 +485,8 @@ namespace Yavsc.Controllers if (result.Succeeded) { ViewData["StatusMessage"] = "Your code was verified"; - return RedirectToLocal(model.ReturnUrl); + _logger.LogInformation($"Signed in. returning to {model.ReturnUrl}"); + return Redirect(model.ReturnUrl); } if (result.IsLockedOut) { @@ -494,17 +540,7 @@ namespace Yavsc.Controllers return await _userManager.FindByIdAsync(HttpContext.User.GetUserId()); } - private IActionResult RedirectToLocal(string returnUrl) - { - if (Url.IsLocalUrl(returnUrl)) - { - return Redirect(returnUrl); - } - else - { - return RedirectToAction(nameof(HomeController.Index), "Home"); - } - } + #endregion } diff --git a/build/approot/src/Yavsc/Controllers/ApplicationController.cs b/build/approot/src/Yavsc/Controllers/ApplicationController.cs deleted file mode 100644 index abf62500..00000000 --- a/build/approot/src/Yavsc/Controllers/ApplicationController.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Linq; -using Microsoft.AspNet.Authorization; -using Microsoft.AspNet.Mvc; -using Yavsc.Models; - -namespace Yavsc.Controllers -{ - [Authorize("AdministratorOnly")] - public class ApplicationController : Controller - { - private ApplicationDbContext _context; - - public ApplicationController(ApplicationDbContext context) - { - _context = context; - } - - // GET: Application - public IActionResult Index() - { - return View(_context.Applications.ToList()); - } - - // GET: Application/Details/5 - public IActionResult Details(string id) - { - if (id == null) - { - return HttpNotFound(); - } - - Application application = _context.Applications.Single(m => m.ApplicationID == id); - if (application == null) - { - return HttpNotFound(); - } - - return View(application); - } - - // GET: Application/Create - public IActionResult Create() - { - return View(); - } - - // POST: Application/Create - [HttpPost] - [ValidateAntiForgeryToken] - public IActionResult Create(Application application) - { - if (ModelState.IsValid) - { - application.ApplicationID = Guid.NewGuid().ToString(); - _context.Applications.Add(application); - _context.SaveChanges(); - return RedirectToAction("Index"); - } - return View(application); - } - - // GET: Application/Edit/5 - public IActionResult Edit(string id) - { - if (id == null) - { - return HttpNotFound(); - } - - Application application = _context.Applications.Single(m => m.ApplicationID == id); - if (application == null) - { - return HttpNotFound(); - } - return View(application); - } - - // POST: Application/Edit/5 - [HttpPost] - [ValidateAntiForgeryToken] - public IActionResult Edit(Application application) - { - if (ModelState.IsValid) - { - _context.Update(application); - _context.SaveChanges(); - return RedirectToAction("Index"); - } - return View(application); - } - - // GET: Application/Delete/5 - [ActionName("Delete")] - public IActionResult Delete(string id) - { - if (id == null) - { - return HttpNotFound(); - } - - Application application = _context.Applications.Single(m => m.ApplicationID == id); - if (application == null) - { - return HttpNotFound(); - } - - return View(application); - } - - // POST: Application/Delete/5 - [HttpPost, ActionName("Delete")] - [ValidateAntiForgeryToken] - public IActionResult DeleteConfirmed(string id) - { - Application application = _context.Applications.Single(m => m.ApplicationID == id); - _context.Applications.Remove(application); - _context.SaveChanges(); - return RedirectToAction("Index"); - } - } -} diff --git a/build/approot/src/Yavsc/Controllers/ClientController.cs b/build/approot/src/Yavsc/Controllers/ClientController.cs new file mode 100644 index 00000000..a1243e82 --- /dev/null +++ b/build/approot/src/Yavsc/Controllers/ClientController.cs @@ -0,0 +1,136 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNet.Mvc; +using Microsoft.AspNet.Mvc.Rendering; +using Microsoft.Data.Entity; +using Yavsc.Models; +using Yavsc.Models.Auth; + +namespace Yavsc.Controllers +{ + public class ClientController : Controller + { + private ApplicationDbContext _context; + + public ClientController(ApplicationDbContext context) + { + _context = context; + } + + // GET: Client + public async Task Index() + { + return View(await _context.Applications.ToListAsync()); + } + + // GET: Client/Details/5 + public async Task Details(string id) + { + if (id == null) + { + return HttpNotFound(); + } + + Client client = await _context.Applications.SingleAsync(m => m.Id == id); + if (client == null) + { + return HttpNotFound(); + } + return View(client); + } + + // GET: Client/Create + public IActionResult Create() + { + return View(); + } + + // POST: Client/Create + [HttpPost] + [ValidateAntiForgeryToken] + public async Task Create(Client client) + { + if (ModelState.IsValid) + { + client.Id = Guid.NewGuid().ToString(); + _context.Applications.Add(client); + await _context.SaveChangesAsync(); + return RedirectToAction("Index"); + } + SetAppTypesInputValues(); + return View(client); + } + private void SetAppTypesInputValues() + { + ViewData["Type"] = + new SelectListItem[] {  + new SelectListItem { + Text = ApplicationTypes.JavaScript.ToString(), + Value = ((int) ApplicationTypes.JavaScript).ToString() }, + new SelectListItem { + Text = ApplicationTypes.NativeConfidential.ToString(), + Value = ((int) ApplicationTypes.NativeConfidential).ToString() + } + }; + } + // GET: Client/Edit/5 + public async Task Edit(string id) + { + if (id == null) + { + return HttpNotFound(); + } + + Client client = await _context.Applications.SingleAsync(m => m.Id == id); + if (client == null) + { + return HttpNotFound(); + } + SetAppTypesInputValues(); + return View(client); + } + + // POST: Client/Edit/5 + [HttpPost] + [ValidateAntiForgeryToken] + public async Task Edit(Client client) + { + if (ModelState.IsValid) + { + _context.Update(client); + await _context.SaveChangesAsync(); + return RedirectToAction("Index"); + } + return View(client); + } + + // GET: Client/Delete/5 + [ActionName("Delete")] + public async Task Delete(string id) + { + if (id == null) + { + return HttpNotFound(); + } + + Client client = await _context.Applications.SingleAsync(m => m.Id == id); + if (client == null) + { + return HttpNotFound(); + } + + return View(client); + } + + // POST: Client/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public async Task DeleteConfirmed(string id) + { + Client client = await _context.Applications.SingleAsync(m => m.Id == id); + _context.Applications.Remove(client); + await _context.SaveChangesAsync(); + return RedirectToAction("Index"); + } + } +} diff --git a/build/approot/src/Yavsc/Controllers/CommandController.cs b/build/approot/src/Yavsc/Controllers/CommandController.cs index 8bac6f85..0da5d76a 100644 --- a/build/approot/src/Yavsc/Controllers/CommandController.cs +++ b/build/approot/src/Yavsc/Controllers/CommandController.cs @@ -30,7 +30,7 @@ namespace Yavsc.Controllers SmtpSettings _smtpSettings; private readonly ILogger _logger; - public CommandController(ApplicationDbContext context,IOptions googleSettings, + public CommandController(ApplicationDbContext context, IOptions googleSettings, IGoogleCloudMessageSender GCMSender, UserManager userManager, IStringLocalizer localizer, @@ -54,11 +54,11 @@ namespace Yavsc.Controllers public IActionResult Index() { return View(_context.BookQueries - .Include(x=>x.Client) - .Include(x=>x.PerformerProfile) - .Include(x=>x.PerformerProfile.Performer) - .Include(x=>x.Location) - .Include(x=>x.Bill).ToList()); + .Include(x => x.Client) + .Include(x => x.PerformerProfile) + .Include(x => x.PerformerProfile.Performer) + .Include(x => x.Location) + .Include(x => x.Bill).ToList()); } // GET: Command/Details/5 @@ -70,8 +70,8 @@ namespace Yavsc.Controllers } BookQuery command = _context.BookQueries - .Include(x=>x.Location) - .Include(x=>x.PerformerProfile) + .Include(x => x.Location) + .Include(x => x.PerformerProfile) .Single(m => m.Id == id); if (command == null) { @@ -90,66 +90,79 @@ namespace Yavsc.Controllers /// public IActionResult Create(string id) { + if (string.IsNullOrWhiteSpace(id)) + throw new InvalidOperationException( + "This method needs a performer id" + ); var pro = _context.Performers.Include( - x=>x.Performer).FirstOrDefault( - x=>x.PerfomerId == id + x => x.Performer).FirstOrDefault( + x => x.PerfomerId == id ); - if (pro==null) + if (pro == null) return HttpNotFound(); ViewBag.GoogleSettings = _googleSettings; var userid = User.GetUserId(); - var user = _userManager.FindByIdAsync(userid).Result; - return View(new BookQuery{ + var user = _userManager.FindByIdAsync(userid).Result; + return View(new BookQuery(new Location(),DateTime.Now.AddHours(4)) + { PerformerProfile = pro, PerformerId = pro.PerfomerId, ClientId = userid, - Client = user, - Location = new Location(), - EventDate = DateTime.Now.AddHours(4) + Client = user }); } // POST: Command/Create - [HttpPost] + [HttpPost, Authorize] [ValidateAntiForgeryToken] public async Task Create(BookQuery command) { - var pro = _context.Performers.FirstOrDefault( - x=>x.PerfomerId == command.PerformerId + var uid = User.GetUserId(); + var prid = command.PerformerId; + if (string.IsNullOrWhiteSpace(uid) + || string.IsNullOrWhiteSpace(prid)) + throw new InvalidOperationException( + "This method needs a prid and uid" + ); + var pro = _context.Performers.Include( + u => u.Performer + ).Include( u => u.Performer.Devices) + .FirstOrDefault( + x => x.PerfomerId == command.PerformerId ); command.PerformerProfile = pro; - var user = _userManager.FindByIdAsync( - User.GetUserId() - ).Result; + var user = await _userManager.FindByIdAsync( + User.GetUserId() + ); command.Client = user; if (ModelState.IsValid) { var yaev = command.CreateEvent(_localizer); - MessageWithPayloadResponse grep=null; + MessageWithPayloadResponse grep = null; _context.Attach(command.Location); - _context.BookQueries.Add(command,GraphBehavior.IncludeDependents); + _context.BookQueries.Add(command, GraphBehavior.IncludeDependents); _context.SaveChanges(); - if (command.PerformerProfile.AcceptNotifications - && command.PerformerProfile.AcceptPublicContact - && command.PerformerProfile.Performer.Devices.Select(d=>d.RegistrationId)!=null) { - grep = await _GCMSender.NotifyAsync(_googleSettings, - command.PerformerProfile.Performer.Devices.Select(d=>d.RegistrationId), - yaev - ); - } - // TODO setup a profile choice to allow notifications - // both on mailbox and mobile - // if (grep==null || grep.success<=0 || grep.failure>0) + + if (pro.AcceptNotifications + && pro.AcceptPublicContact) { + if (pro.Performer.Devices.Count > 0) + grep = await _GCMSender.NotifyAsync(_googleSettings, + command.PerformerProfile.Performer.Devices.Select(d => d.RegistrationId), + yaev + ); + // TODO setup a profile choice to allow notifications + // both on mailbox and mobile + // if (grep==null || grep.success<=0 || grep.failure>0) + await _emailSender.SendEmailAsync( _siteSettings, _smtpSettings, command.PerformerProfile.Performer.Email, yaev.Title, $"{yaev.Description}\r\n-- \r\n{yaev.Comment}\r\n" ); - } return RedirectToAction("Index"); } diff --git a/build/approot/src/Yavsc/Controllers/EstimateController.cs b/build/approot/src/Yavsc/Controllers/EstimateController.cs index 5bdf0756..cd2c240c 100644 --- a/build/approot/src/Yavsc/Controllers/EstimateController.cs +++ b/build/approot/src/Yavsc/Controllers/EstimateController.cs @@ -8,6 +8,7 @@ using Microsoft.Data.Entity; using Microsoft.Extensions.OptionsModel; using Yavsc.Helpers; using Yavsc.Models; +using Yavsc.Models.Billing; namespace Yavsc.Controllers { @@ -36,10 +37,10 @@ namespace Yavsc.Controllers return HttpNotFound(); } - Estimate estimate = _context.Estimates - .Include(e => e.Command) - .Include(e => e.Command.PerformerProfile) - .Include(e => e.Command.PerformerProfile.Performer) + RDVEstimate estimate = _context.Estimates + .Include(e => e.Query) + .Include(e => e.Query.PerformerProfile) + .Include(e => e.Query.PerformerProfile.Performer) .Single(m => m.Id == id); if (estimate == null) { @@ -60,7 +61,7 @@ namespace Yavsc.Controllers // POST: Estimate/Create [HttpPost] [ValidateAntiForgeryToken] - public IActionResult Create(Estimate estimate, + public IActionResult Create(RDVEstimate estimate, ICollection newGraphics, ICollection newFiles ) @@ -74,9 +75,9 @@ namespace Yavsc.Controllers var perfomerProfile = _context.Performers .Include( perpr => perpr.Performer).FirstOrDefault( - x=>x.PerfomerId == estimate.Command.PerformerId + x=>x.PerfomerId == estimate.Query.PerformerId ); - var command = _context.Commands.FirstOrDefault( + var command = _context.BookQueries.FirstOrDefault( cmd => cmd.Id == estimate.CommandId ); @@ -114,7 +115,7 @@ namespace Yavsc.Controllers return HttpNotFound(); } - Estimate estimate = _context.Estimates.Single(m => m.Id == id); + RDVEstimate estimate = _context.Estimates.Single(m => m.Id == id); if (estimate == null) { return HttpNotFound(); @@ -126,7 +127,7 @@ namespace Yavsc.Controllers // POST: Estimate/Edit/5 [HttpPost] [ValidateAntiForgeryToken] - public IActionResult Edit(Estimate estimate) + public IActionResult Edit(RDVEstimate estimate) { if (ModelState.IsValid) { @@ -146,7 +147,7 @@ namespace Yavsc.Controllers return HttpNotFound(); } - Estimate estimate = _context.Estimates.Single(m => m.Id == id); + RDVEstimate estimate = _context.Estimates.Single(m => m.Id == id); if (estimate == null) { return HttpNotFound(); @@ -160,7 +161,7 @@ namespace Yavsc.Controllers [ValidateAntiForgeryToken] public IActionResult DeleteConfirmed(long id) { - Estimate estimate = _context.Estimates.Single(m => m.Id == id); + RDVEstimate estimate = _context.Estimates.Single(m => m.Id == id); _context.Estimates.Remove(estimate); _context.SaveChanges(); return RedirectToAction("Index"); diff --git a/build/approot/src/Yavsc/Controllers/FrontOfficeController.cs b/build/approot/src/Yavsc/Controllers/FrontOfficeController.cs index 01a957dc..a7eb46f8 100644 --- a/build/approot/src/Yavsc/Controllers/FrontOfficeController.cs +++ b/build/approot/src/Yavsc/Controllers/FrontOfficeController.cs @@ -6,6 +6,8 @@ using Microsoft.AspNet.Identity; using Microsoft.Data.Entity; using Microsoft.Extensions.Logging; using Yavsc.Models.Booking; +using Yavsc.Helpers; +using Yavsc.Models.Billing; namespace Yavsc.Controllers { @@ -93,11 +95,11 @@ namespace Yavsc.Controllers [Produces("text/x-tex"), Authorize, Route("Release/Estimate-{id}.tex")] - public Estimate Estimate(long id) + public RDVEstimate Estimate(long id) { - var estimate = _context.Estimates.Include(x=>x.Command). - Include(x=>x.Command.Client).FirstOrDefault(x=>x.Id==id); - var adc = estimate.Command.Client.UserName; + var estimate = _context.Estimates.Include(x=>x.Query). + Include(x=>x.Query.Client).FirstOrDefault(x=>x.Id==id); + var adc = estimate.Query.Client.UserName; return estimate; } } diff --git a/build/approot/src/Yavsc/Controllers/HomeController.cs b/build/approot/src/Yavsc/Controllers/HomeController.cs index bbc98b74..b97cb1ce 100644 --- a/build/approot/src/Yavsc/Controllers/HomeController.cs +++ b/build/approot/src/Yavsc/Controllers/HomeController.cs @@ -29,6 +29,10 @@ namespace Yavsc.Controllers { return View(); } + public IActionResult AboutMarkdown() + { + return View(); + } public IActionResult Contact() { diff --git a/build/approot/src/Yavsc/Controllers/ManageController.cs b/build/approot/src/Yavsc/Controllers/ManageController.cs index a75fc674..1228758c 100644 --- a/build/approot/src/Yavsc/Controllers/ManageController.cs +++ b/build/approot/src/Yavsc/Controllers/ManageController.cs @@ -18,6 +18,7 @@ using Yavsc.Helpers; using Yavsc.ViewModels.Calendar; using System.Net; using Microsoft.Extensions.Localization; +using Yavsc.Models.Workflow; namespace Yavsc.Controllers { diff --git a/build/approot/src/Yavsc/Controllers/OAuthController.cs b/build/approot/src/Yavsc/Controllers/OAuthController.cs index 792e16b3..78275fde 100644 --- a/build/approot/src/Yavsc/Controllers/OAuthController.cs +++ b/build/approot/src/Yavsc/Controllers/OAuthController.cs @@ -1,34 +1,43 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using System.Security.Claims; -using System.Threading; using System.Threading.Tasks; using Microsoft.AspNet.Authorization; using Microsoft.AspNet.DataProtection.KeyManagement; +using Microsoft.AspNet.Http.Authentication; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Mvc; -using Microsoft.Data.Entity; +using Microsoft.AspNet.WebUtilities; using Microsoft.Extensions.Logging; using Microsoft.Extensions.OptionsModel; -using Yavsc.Extensions; +using Microsoft.Extensions.Primitives; +using OAuth.AspNet.AuthServer; using Yavsc.Models; -using Yavsc.ViewModels.Account; +using Yavsc.Models.Auth; namespace Yavsc.Controllers { + public class TokenResponse + { + public string access_token { get; set; } + public int expires_in { get; set; } + public string grant_type { get; set; } + + public int entity_id { get; set; } + } + [AllowAnonymous] public class OAuthController : Controller { ApplicationDbContext _context; UserManager _userManager; - + SiteSettings _siteSettings; ILogger _logger; private readonly SignInManager _signInManager; - private TokenAuthOptions _tokenOptions; public OAuthController(ApplicationDbContext context, SignInManager signInManager, IKeyManager keyManager, - IOptions tokenOptions, UserManager userManager, IOptions siteSettings, ILoggerFactory loggerFactory @@ -37,90 +46,53 @@ namespace Yavsc.Controllers _siteSettings = siteSettings.Value; _context = context; _signInManager = signInManager; - _tokenOptions = tokenOptions.Value; _userManager = userManager; _logger = loggerFactory.CreateLogger(); } - - [HttpGet("~/signin")] - public ActionResult SignIn(string returnUrl = null) + /* + private async Task GetToken(string purpose, string userid, DateTime? expires) { - // Note: the "returnUrl" parameter corresponds to the endpoint the user agent - // will be redirected to after a successful authentication and not - // the redirect_uri of the requesting client application against the third - // party identity provider. - return View("SignIn", new LoginViewModel - { - ReturnUrl = returnUrl, - ExternalProviders = HttpContext.GetExternalProviders() - }); - /* Note: When using an external login provider, redirect the query : - var properties = _signInManager.ConfigureExternalAuthenticationProperties(OpenIdConnectDefaults.AuthenticationScheme, returnUrl); - return new ChallengeResult(OpenIdConnectDefaults.AuthenticationScheme, properties); - */ + // Here, you should create or look up an identity for the user which is being authenticated. + // For now, just creating a simple generic identity. + var identuser = await _userManager.FindByIdAsync(userid); + + return await _tokenProvider.GenerateAsync(purpose, _userManager, identuser); } - [HttpGet("~/authenticate")] - public ActionResult Authenticate(string returnUrl = null) + /// + /// Check if currently authenticated. Will throw an exception of some sort which shoudl be caught by a general + /// exception handler and returned to the user as a 401, if not authenticated. Will return a fresh token if + /// the user is authenticated, which will reset the expiry. + /// + /// + [HttpGet, HttpPost, Authorize] + [Route("~/oauth/token")] + public async Task Get() { - return SignIn(returnUrl); - } - - [HttpGet("~/forbidden")] - public ActionResult Forbidden(string returnUrl = null) - { - return View("Forbidden",returnUrl); - } - - [HttpPost("~/signin")] - public IActionResult SignIn(string Provider, string ReturnUrl) - { - // Note: the "provider" parameter corresponds to the external - // authentication provider choosen by the user agent. - if (string.IsNullOrEmpty(Provider)) + bool authenticated = false; + string user = null; + int entityId = -1; + string token = null; + DateTime? tokenExpires = default(DateTime?); + var currentUser = User; + if (currentUser != null) { - _logger.LogWarning("Provider not specified"); - return HttpBadRequest(); + authenticated = currentUser.Identity.IsAuthenticated; + if (authenticated) + { + user = User.GetUserId(); + _logger.LogInformation($"authenticated user:{user}"); + + foreach (Claim c in currentUser.Claims) if (c.Type == "EntityID") entityId = Convert.ToInt32(c.Value); + + tokenExpires = DateTime.UtcNow.AddMinutes(2); + token = await GetToken("id_token", user, tokenExpires); + return new TokenResponse { access_token = token, expires_in = 3400, entity_id = entityId }; + } } - - if (!_signInManager.GetExternalAuthenticationSchemes().Any(x => x.AuthenticationScheme == Provider)) - { - _logger.LogWarning($"Provider not found : {Provider}"); - return HttpBadRequest(); - } - - // Instruct the middleware corresponding to the requested external identity - // provider to redirect the user agent to its own authorization endpoint. - // Note: the authenticationScheme parameter must match the value configured in Startup.cs - - // Note: the "returnUrl" parameter corresponds to the endpoint the user agent - // will be redirected to after a successful authentication and not - // the redirect_uri of the requesting client application. - if (string.IsNullOrEmpty(ReturnUrl)) - { - _logger.LogWarning("ReturnUrl not specified"); - return HttpBadRequest(); - } - var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = ReturnUrl }); - var properties = _signInManager.ConfigureExternalAuthenticationProperties(Provider, redirectUrl); - // var properties = new AuthenticationProperties{RedirectUri=ReturnUrl}; - return new ChallengeResult(Provider,properties); - } - - - - [HttpGet("~/signout"), HttpPost("~/signout")] - public async Task SignOut() - { - // Instruct the cookies middleware to delete the local cookie created - // when the user agent is redirected from the external identity provider - // after a successful authentication flow (e.g Google or Facebook). - - await HttpContext.Authentication.SignOutAsync("ServerCookie"); - } - - + return new { authenticated = false }; + } */ [HttpGet("~/api/getclaims"), Produces("application/json")] @@ -140,14 +112,86 @@ namespace Yavsc.Controllers return Ok(claims); } - protected virtual Task GetApplicationAsync(string identifier, CancellationToken cancellationToken) + [HttpGet(Constants.AuthorizePath),HttpPost(Constants.AuthorizePath)] + public async Task Authorize() { - // Retrieve the application details corresponding to the requested client_id. - return (from application in _context.Applications - where application.ApplicationID == identifier - select application).SingleOrDefaultAsync(cancellationToken); + if (Response.StatusCode != 200) + { + return View("AuthorizeError"); + } + + AuthenticationManager authentication = Request.HttpContext.Authentication; + var appAuthSheme = Startup.IdentityAppOptions.Cookies.ApplicationCookieAuthenticationScheme; + + ClaimsPrincipal principal = await authentication.AuthenticateAsync(appAuthSheme); + + if (principal == null) + { + await authentication.ChallengeAsync(appAuthSheme); + + if (Response.StatusCode == 200) + return new HttpUnauthorizedResult(); + + return new HttpStatusCodeResult(Response.StatusCode); + } + + string[] scopes = { }; + string redirect_uri=null; + + IDictionary queryStringComponents = null; + + if (Request.QueryString.HasValue) + { + queryStringComponents = QueryHelpers.ParseQuery(Request.QueryString.Value); + + if (queryStringComponents.ContainsKey("scope")) + scopes = queryStringComponents["scope"]; + if (queryStringComponents.ContainsKey("redirect_uri")) + redirect_uri = queryStringComponents["redirect_uri"]; + } + + var model = new AuthorisationView { + Scopes = Constants.SiteScopes.Where(s=> scopes.Contains(s.Id)).ToArray(), + Message = "Welcome." + } ; + + if (Request.Method == "POST") + { + if (!string.IsNullOrEmpty(Request.Form["submit.Grant"])) + { + principal = new ClaimsPrincipal(principal.Identities); + + ClaimsIdentity primaryIdentity = (ClaimsIdentity)principal.Identity; + + foreach (var scope in scopes) + { + primaryIdentity.AddClaim(new Claim("urn:oauth:scope", scope)); + } + await authentication.SignInAsync(OAuthDefaults.AuthenticationType, principal); + } + if (!string.IsNullOrEmpty(Request.Form["submit.Deny"])) + { + await authentication.SignOutAsync(appAuthSheme); + if (redirect_uri!=null) + return Redirect(redirect_uri+"?error=scope-denied"); + return Redirect("/"); + } + if (!string.IsNullOrEmpty(Request.Form["submit.Login"])) + { + await authentication.SignOutAsync(appAuthSheme); + await authentication.ChallengeAsync(appAuthSheme); + return new HttpUnauthorizedResult(); + } + } + + return View(model); + } + + [HttpGet("~/oauth/success")] + public IActionResult NativeAuthSuccess () + { + return RedirectToAction("Index","Home"); } - } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Controllers/TokenController.cs b/build/approot/src/Yavsc/Controllers/TokenController.cs deleted file mode 100644 index 523d04fb..00000000 --- a/build/approot/src/Yavsc/Controllers/TokenController.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using Microsoft.AspNet.Mvc; -using System.Security.Claims; -using Microsoft.AspNet.Authorization; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.OptionsModel; -using Yavsc.Auth; -using Microsoft.AspNet.Identity; -using Yavsc.Models; -using System.Threading.Tasks; - -namespace Yavsc.Controllers -{ - [Produces("application/json"),AllowAnonymous] - public class TokenController : Controller - { - private readonly TokenAuthOptions tokenOptions; - private ILogger logger; - UserManager manager; - SignInManager signInManager; - public class TokenResponse {  - public string access_token { get; set; } - public int expires_in { get; set; } - public string grant_type { get; set; } - - public int entity_id { get; set; } - } - UserTokenProvider tokenProvider; - - public TokenController( UserManager userManager, - SignInManager signInManager, - IOptions token_options, ILoggerFactory loggerFactory, UserTokenProvider tokenProvider) - { - this.manager = userManager; - this.tokenOptions = token_options.Value; - this.signInManager = signInManager; - this.tokenProvider = tokenProvider; - //this.bearerOptions = options.Value; - //this.signingCredentials = signingCredentials; - logger = loggerFactory.CreateLogger(); - } - - /// - /// Check if currently authenticated. Will throw an exception of some sort which shoudl be caught by a general - /// exception handler and returned to the user as a 401, if not authenticated. Will return a fresh token if - /// the user is authenticated, which will reset the expiry. - /// - /// - [HttpGet,HttpPost,Authorize] - [Route("~/api/token/get")] - public async Task Get() - { - bool authenticated = false; - string user = null; - int entityId = -1; - string token = null; - DateTime? tokenExpires = default(DateTime?); - var currentUser = User; - if (currentUser != null) - { - authenticated = currentUser.Identity.IsAuthenticated; - if (authenticated) - { - user = User.GetUserId(); - logger.LogInformation($"authenticated user:{user}"); - - foreach (Claim c in currentUser.Claims) if (c.Type == "EntityID") entityId = Convert.ToInt32(c.Value); - - tokenExpires = DateTime.UtcNow.AddMinutes(2); - token = await GetToken("id_token", user, tokenExpires); - return new TokenResponse { access_token = token, expires_in = 3400, entity_id = entityId }; - } - } - return new { authenticated = false }; - } - - public class AuthRequest - { - public string username { get; set; } - public string password { get; set; } - } - - /// - /// Request a new token for a given username/password pair. - /// - /// - /// - [HttpPost,Route("~/api/token/post")] - public async Task Post(AuthRequest req) - { - if (!ModelState.IsValid) - return new BadRequestObjectResult(ModelState); - // Obviously, at this point you need to validate the username and password against whatever system you wish. - var signResult = await signInManager.PasswordSignInAsync(req.username, req.password,false,true); - - if (signResult.Succeeded) - { - DateTime? expires = DateTime.UtcNow.AddMinutes(tokenOptions.ExpiresIn); - var token = await GetToken("id_token",User.GetUserId(), expires); - return Ok(new TokenResponse {access_token = token, expires_in = 3400, grant_type="id_token" }); - } - return new BadRequestObjectResult(new { authenticated = false } ) ; - } - - private async Task GetToken(string purpose, string userid, DateTime? expires) - { - // Here, you should create or look up an identity for the user which is being authenticated. - // For now, just creating a simple generic identity. - var identuser = await manager.FindByIdAsync(userid); - - return await tokenProvider.GenerateAsync(purpose,manager,identuser); - } - } -} diff --git a/build/approot/src/Yavsc/GoogleApis/MapTracks.cs b/build/approot/src/Yavsc/GoogleApis/MapTracks.cs index d65fcae5..94132bf2 100644 --- a/build/approot/src/Yavsc/GoogleApis/MapTracks.cs +++ b/build/approot/src/Yavsc/GoogleApis/MapTracks.cs @@ -18,7 +18,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . -using Yavsc.Model; +using Yavsc.Helpers; using Yavsc.Models.Google; namespace Yavsc.GoogleApis diff --git a/build/approot/src/Yavsc/Helpers/AuthHelpers.cs b/build/approot/src/Yavsc/Helpers/AuthHelpers.cs index 9d461151..790e4c6a 100644 --- a/build/approot/src/Yavsc/Helpers/AuthHelpers.cs +++ b/build/approot/src/Yavsc/Helpers/AuthHelpers.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using Microsoft.AspNet.Http; using Microsoft.AspNet.Http.Authentication; -namespace Yavsc.Extensions { +namespace Yavsc.Helpers { public static class HttpContextExtensions { public static IEnumerable GetExternalProviders(this HttpContext context) { if (context == null) { @@ -26,4 +26,6 @@ namespace Yavsc.Extensions { select description).Any(); } } + + } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Helpers/FileSystemHelpers.cs b/build/approot/src/Yavsc/Helpers/FileSystemHelpers.cs index 71d0cb6a..74984222 100644 --- a/build/approot/src/Yavsc/Helpers/FileSystemHelpers.cs +++ b/build/approot/src/Yavsc/Helpers/FileSystemHelpers.cs @@ -1,18 +1,18 @@ using System.IO; using Microsoft.AspNet.FileProviders; -using Yavsc.Models; +using Yavsc.Models.Billing; namespace Yavsc.Helpers { public static class FileSystemHelpers { - public static IDirectoryContents GetFileContent(this Estimate estimate, string userFileDir) + public static IDirectoryContents GetFileContent(this RDVEstimate estimate, string userFileDir) { - if (estimate?.Command?.PerformerProfile?.Performer == null) + if (estimate?.Query?.PerformerProfile?.Performer == null) return null; var fsp = new PhysicalFileProvider( Path.Combine( userFileDir, - estimate.Command.PerformerProfile.Performer.UserName + estimate.Query.PerformerProfile.Performer.UserName )); return fsp.GetDirectoryContents( Path.Combine(Constants.UserBillsFilesDir, estimate.Id.ToString()) diff --git a/build/approot/src/Yavsc/Helpers/ListItemHelpers.cs b/build/approot/src/Yavsc/Helpers/ListItemHelpers.cs index 3a4734d1..5a9c2b60 100644 --- a/build/approot/src/Yavsc/Helpers/ListItemHelpers.cs +++ b/build/approot/src/Yavsc/Helpers/ListItemHelpers.cs @@ -4,7 +4,7 @@ using System.Linq; using Microsoft.AspNet.Mvc.Rendering; using Yavsc.Models; -namespace Yavsc { +namespace Yavsc.Helpers { public static class ListItemHelpers { public static List ActivityItems( diff --git a/build/approot/src/Yavsc/Helpers/OAuthHelpers.cs b/build/approot/src/Yavsc/Helpers/OAuthHelpers.cs new file mode 100644 index 00000000..0363b73a --- /dev/null +++ b/build/approot/src/Yavsc/Helpers/OAuthHelpers.cs @@ -0,0 +1,18 @@ +using System; +using System.Security.Cryptography; + +namespace Yavsc.Helpers { +public class Helper + { + public static string GetHash(string input) + { + HashAlgorithm hashAlgorithm = new SHA256CryptoServiceProvider(); + + byte[] byteValue = System.Text.Encoding.UTF8.GetBytes(input); + + byte[] byteHash = hashAlgorithm.ComputeHash(byteValue); + + return Convert.ToBase64String(byteHash); + } + } +} \ No newline at end of file diff --git a/build/approot/src/Yavsc/Helpers/SimpleJsonPostMethod.cs b/build/approot/src/Yavsc/Helpers/SimpleJsonPostMethod.cs index 29303247..71da12c0 100644 --- a/build/approot/src/Yavsc/Helpers/SimpleJsonPostMethod.cs +++ b/build/approot/src/Yavsc/Helpers/SimpleJsonPostMethod.cs @@ -23,7 +23,7 @@ using System.Net; using System.IO; using Newtonsoft.Json; -namespace Yavsc.Model +namespace Yavsc.Helpers { /// /// Simple json post method. diff --git a/build/approot/src/Yavsc/Migrations/20160610153353_client.Designer.cs b/build/approot/src/Yavsc/Migrations/20160610153353_client.Designer.cs new file mode 100644 index 00000000..971f52c8 --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160610153353_client.Designer.cs @@ -0,0 +1,693 @@ +using System; +using Microsoft.Data.Entity; +using Microsoft.Data.Entity.Infrastructure; +using Microsoft.Data.Entity.Migrations; +using Yavsc.Models; + +namespace Yavsc.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20160610153353_client")] + partial class client + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "7.0.0-rc1-16348"); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.Property("RegistrationId"); + + b.Property("DeviceOwnerId"); + + b.Property("Name"); + + b.HasKey("RegistrationId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b => + { + b.Property("Id"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("Name") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .HasAnnotation("Relational:Name", "RoleNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("RoleId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.Property("LoginProvider"); + + b.Property("ProviderKey"); + + b.Property("ProviderDisplayName"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasAnnotation("Relational:TableName", "AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.HasKey("UserId", "RoleId"); + + b.HasAnnotation("Relational:TableName", "AspNetUserRoles"); + }); + + modelBuilder.Entity("Yavsc.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Address") + .IsRequired(); + + b.Property("Latitude"); + + b.Property("Longitude"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.Property("UserId"); + + b.Property("ContactCredits"); + + b.Property("Credits"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Activity", b => + { + b.Property("Code") + .HasAnnotation("MaxLength", 512); + + b.Property("ActorDenomination"); + + b.Property("Description"); + + b.Property("ModeratorGroupName"); + + b.Property("Name") + .IsRequired() + .HasAnnotation("MaxLength", 512); + + b.Property("Photo"); + + b.HasKey("Code"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Property("Id"); + + b.Property("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("DedicatedGoogleCalendar"); + + b.Property("Email") + .HasAnnotation("MaxLength", 256); + + b.Property("EmailConfirmed"); + + b.Property("LockoutEnabled"); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedUserName") + .HasAnnotation("MaxLength", 256); + + b.Property("PasswordHash"); + + b.Property("PhoneNumber"); + + b.Property("PhoneNumberConfirmed"); + + b.Property("PostalAddressId"); + + b.Property("SecurityStamp"); + + b.Property("TwoFactorEnabled"); + + b.Property("UserName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasAnnotation("Relational:Name", "EmailIndex"); + + b.HasIndex("NormalizedUserName") + .HasAnnotation("Relational:Name", "UserNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetUsers"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id"); + + b.Property("Active"); + + b.Property("AllowedOrigin") + .HasAnnotation("MaxLength", 100); + + b.Property("DisplayName"); + + b.Property("LogoutRedirectUri"); + + b.Property("RedirectUri"); + + b.Property("RefreshTokenLifeTime"); + + b.Property("Secret"); + + b.Property("Type"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id"); + + b.Property("ClientId") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.Property("ExpiresUtc"); + + b.Property("IssuedUtc"); + + b.Property("ProtectedTicket") + .IsRequired(); + + b.Property("Subject") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BalanceId") + .IsRequired(); + + b.Property("ExecDate"); + + b.Property("Impact"); + + b.Property("Reason") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.BaseProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId") + .IsRequired(); + + b.Property("bcontent"); + + b.Property("modified"); + + b.Property("photo"); + + b.Property("posted"); + + b.Property("rate"); + + b.Property("title"); + + b.Property("visible"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId") + .IsRequired(); + + b.Property("CreationDate") + .ValueGeneratedOnAdd() + .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP"); + + b.Property("EventDate"); + + b.Property("Lag"); + + b.Property("LocationId"); + + b.Property("PerformerId") + .IsRequired(); + + b.Property("Previsional"); + + b.Property("ValidationDate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("OwnerId"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CircleId") + .IsRequired(); + + b.Property("MemberId") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId") + .IsRequired(); + + b.Property("CreationDate"); + + b.Property("Lag"); + + b.Property("PerformerId") + .IsRequired(); + + b.Property("Previsional"); + + b.Property("ValidationDate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.CommandLine", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ArticleId"); + + b.Property("BookQueryId"); + + b.Property("CommandId"); + + b.Property("Comment"); + + b.Property("Count"); + + b.Property("EstimateId"); + + b.Property("UnitaryCost"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.Property("OwnerId"); + + b.Property("UserId"); + + b.HasKey("OwnerId", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Estimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AttachedFilesString"); + + b.Property("AttachedGraphicsString"); + + b.Property("CommandId"); + + b.Property("Description"); + + b.Property("Status"); + + b.Property("Title"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.OAuth.OAuth2Tokens", b => + { + b.Property("UserId"); + + b.Property("AccessToken"); + + b.Property("Expiration"); + + b.Property("ExpiresIn"); + + b.Property("RefreshToken"); + + b.Property("TokenType"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.PerformerProfile", b => + { + b.Property("PerfomerId"); + + b.Property("AcceptGeoLocalisation"); + + b.Property("AcceptNotifications"); + + b.Property("AcceptPublicContact"); + + b.Property("Active"); + + b.Property("ActivityCode") + .IsRequired(); + + b.Property("MaxDailyCost"); + + b.Property("MinDailyCost"); + + b.Property("OfferId"); + + b.Property("OrganisationAddressId"); + + b.Property("Rate"); + + b.Property("SIREN") + .IsRequired() + .HasAnnotation("MaxLength", 14); + + b.Property("WebSite"); + + b.HasKey("PerfomerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Billing"); + + b.Property("ContextId"); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Pricing"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("Rate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("DeviceOwnerId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithOne() + .HasForeignKey("Yavsc.Models.AccountBalance", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("PostalAddressId"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.HasOne("Yavsc.Models.AccountBalance") + .WithMany() + .HasForeignKey("BalanceId"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("AuthorId"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("ClientId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("LocationId"); + + b.HasOne("Yavsc.Models.PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.HasOne("Yavsc.Models.Circle") + .WithMany() + .HasForeignKey("CircleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("MemberId"); + }); + + modelBuilder.Entity("Yavsc.Models.Command", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("ClientId"); + + b.HasOne("Yavsc.Models.PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId"); + }); + + modelBuilder.Entity("Yavsc.Models.CommandLine", b => + { + b.HasOne("Yavsc.Models.BaseProduct") + .WithMany() + .HasForeignKey("ArticleId"); + + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("BookQueryId"); + + b.HasOne("Yavsc.Models.Command") + .WithMany() + .HasForeignKey("CommandId"); + + b.HasOne("Yavsc.Models.Estimate") + .WithMany() + .HasForeignKey("EstimateId"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Estimate", b => + { + b.HasOne("Yavsc.Models.Command") + .WithMany() + .HasForeignKey("CommandId"); + }); + + modelBuilder.Entity("Yavsc.Models.PerformerProfile", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ActivityCode"); + + b.HasOne("Yavsc.Models.Service") + .WithMany() + .HasForeignKey("OfferId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("OrganisationAddressId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("PerfomerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Service", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ContextId"); + }); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/20160610153353_client.cs b/build/approot/src/Yavsc/Migrations/20160610153353_client.cs new file mode 100644 index 00000000..ea79a563 --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160610153353_client.cs @@ -0,0 +1,394 @@ +using System; +using Microsoft.Data.Entity.Migrations; + +namespace Yavsc.Migrations +{ + public partial class client : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_Location_LocationId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_Command_ApplicationUser_ClientId", table: "Command"); + migrationBuilder.DropForeignKey(name: "FK_Command_PerformerProfile_PerformerId", table: "Command"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropColumn(name: "GoogleRegId", table: "AspNetUsers"); + migrationBuilder.DropTable("Application"); + migrationBuilder.CreateTable( + name: "GoogleCloudMobileDeclaration", + columns: table => new + { + RegistrationId = table.Column(nullable: false), + DeviceOwnerId = table.Column(nullable: true), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_GoogleCloudMobileDeclaration", x => x.RegistrationId); + table.ForeignKey( + name: "FK_GoogleCloudMobileDeclaration_ApplicationUser_DeviceOwnerId", + column: x => x.DeviceOwnerId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( + name: "Client", + columns: table => new + { + Id = table.Column(nullable: false), + Active = table.Column(nullable: false), + AllowedOrigin = table.Column(nullable: true), + DisplayName = table.Column(nullable: true), + LogoutRedirectUri = table.Column(nullable: true), + RedirectUri = table.Column(nullable: true), + RefreshTokenLifeTime = table.Column(nullable: false), + Secret = table.Column(nullable: true), + Type = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Client", x => x.Id); + }); + migrationBuilder.CreateTable( + name: "RefreshToken", + columns: table => new + { + Id = table.Column(nullable: false), + ClientId = table.Column(nullable: false), + ExpiresUtc = table.Column(nullable: false), + IssuedUtc = table.Column(nullable: false), + ProtectedTicket = table.Column(nullable: false), + Subject = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_RefreshToken", x => x.Id); + }); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_Location_LocationId", + table: "BookQuery", + column: "LocationId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Command_ApplicationUser_ClientId", + table: "Command", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Command_PerformerProfile_PerformerId", + table: "Command", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_Location_LocationId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_Command_ApplicationUser_ClientId", table: "Command"); + migrationBuilder.DropForeignKey(name: "FK_Command_PerformerProfile_PerformerId", table: "Command"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropTable("GoogleCloudMobileDeclaration"); + migrationBuilder.DropTable("Client"); + migrationBuilder.DropTable("RefreshToken"); + migrationBuilder.CreateTable( + name: "Application", + columns: table => new + { + ApplicationID = table.Column(nullable: false), + DisplayName = table.Column(nullable: true), + LogoutRedirectUri = table.Column(nullable: true), + RedirectUri = table.Column(nullable: true), + Secret = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Application", x => x.ApplicationID); + }); + migrationBuilder.AddColumn( + name: "GoogleRegId", + table: "AspNetUsers", + nullable: true); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_Location_LocationId", + table: "BookQuery", + column: "LocationId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Command_ApplicationUser_ClientId", + table: "Command", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Command_PerformerProfile_PerformerId", + table: "Command", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/20160613142037_devices.Designer.cs b/build/approot/src/Yavsc/Migrations/20160613142037_devices.Designer.cs new file mode 100644 index 00000000..dc57c4ac --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160613142037_devices.Designer.cs @@ -0,0 +1,712 @@ +using System; +using Microsoft.Data.Entity; +using Microsoft.Data.Entity.Infrastructure; +using Microsoft.Data.Entity.Migrations; +using Yavsc.Models; + +namespace Yavsc.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20160613142037_devices")] + partial class devices + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "7.0.0-rc1-16348"); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.Property("RegistrationId"); + + b.Property("DeviceOwnerId"); + + b.Property("Name"); + + b.HasKey("RegistrationId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b => + { + b.Property("Id"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("Name") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .HasAnnotation("Relational:Name", "RoleNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("RoleId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.Property("LoginProvider"); + + b.Property("ProviderKey"); + + b.Property("ProviderDisplayName"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasAnnotation("Relational:TableName", "AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.HasKey("UserId", "RoleId"); + + b.HasAnnotation("Relational:TableName", "AspNetUserRoles"); + }); + + modelBuilder.Entity("Yavsc.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Address") + .IsRequired(); + + b.Property("Latitude"); + + b.Property("Longitude"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.Property("UserId"); + + b.Property("ContactCredits"); + + b.Property("Credits"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Activity", b => + { + b.Property("Code") + .HasAnnotation("MaxLength", 512); + + b.Property("ActorDenomination"); + + b.Property("Description"); + + b.Property("ModeratorGroupName"); + + b.Property("Name") + .IsRequired() + .HasAnnotation("MaxLength", 512); + + b.Property("Photo"); + + b.HasKey("Code"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Property("Id"); + + b.Property("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("DedicatedGoogleCalendar"); + + b.Property("Email") + .HasAnnotation("MaxLength", 256); + + b.Property("EmailConfirmed"); + + b.Property("LockoutEnabled"); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedUserName") + .HasAnnotation("MaxLength", 256); + + b.Property("PasswordHash"); + + b.Property("PhoneNumber"); + + b.Property("PhoneNumberConfirmed"); + + b.Property("PostalAddressId"); + + b.Property("SecurityStamp"); + + b.Property("TwoFactorEnabled"); + + b.Property("UserName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasAnnotation("Relational:Name", "EmailIndex"); + + b.HasIndex("NormalizedUserName") + .HasAnnotation("Relational:Name", "UserNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetUsers"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id"); + + b.Property("Active"); + + b.Property("DisplayName"); + + b.Property("LogoutRedirectUri") + .HasAnnotation("MaxLength", 100); + + b.Property("RedirectUri"); + + b.Property("RefreshTokenLifeTime"); + + b.Property("Secret"); + + b.Property("Type"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id"); + + b.Property("ClientId") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.Property("ExpiresUtc"); + + b.Property("IssuedUtc"); + + b.Property("ProtectedTicket") + .IsRequired(); + + b.Property("Subject") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BalanceId") + .IsRequired(); + + b.Property("ExecDate"); + + b.Property("Impact"); + + b.Property("Reason") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ArticleId"); + + b.Property("BookQueryId"); + + b.Property("Comment"); + + b.Property("Count"); + + b.Property("EstimateId"); + + b.Property("NominativeCommandId"); + + b.Property("UnitaryCost"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AttachedFilesString"); + + b.Property("AttachedGraphicsString"); + + b.Property("CommandId"); + + b.Property("Description"); + + b.Property("Status"); + + b.Property("Title"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.NominativeCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId") + .IsRequired(); + + b.Property("CreationDate"); + + b.Property("Lag"); + + b.Property("PerformerId") + .IsRequired(); + + b.Property("Previsional"); + + b.Property("ValidationDate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId") + .IsRequired(); + + b.Property("bcontent"); + + b.Property("modified"); + + b.Property("photo"); + + b.Property("posted"); + + b.Property("rate"); + + b.Property("title"); + + b.Property("visible"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId") + .IsRequired(); + + b.Property("CreationDate") + .ValueGeneratedOnAdd() + .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP"); + + b.Property("EventDate"); + + b.Property("Lag"); + + b.Property("LocationId"); + + b.Property("PerformerId") + .IsRequired(); + + b.Property("Previsional"); + + b.Property("ValidationDate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("OwnerId"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CircleId") + .IsRequired(); + + b.Property("MemberId") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.Property("OwnerId"); + + b.Property("UserId"); + + b.HasKey("OwnerId", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.BaseProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.CommandSpecification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ModelType"); + + b.Property("QueryViewName"); + + b.Property("ServiceId"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Billing"); + + b.Property("ContextId"); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Pricing"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.OAuth.OAuth2Tokens", b => + { + b.Property("UserId"); + + b.Property("AccessToken"); + + b.Property("Expiration"); + + b.Property("ExpiresIn"); + + b.Property("RefreshToken"); + + b.Property("TokenType"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("Rate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Property("PerfomerId"); + + b.Property("AcceptGeoLocalisation"); + + b.Property("AcceptNotifications"); + + b.Property("AcceptPublicContact"); + + b.Property("Active"); + + b.Property("ActivityCode") + .IsRequired(); + + b.Property("MaxDailyCost"); + + b.Property("MinDailyCost"); + + b.Property("OfferId"); + + b.Property("OrganisationAddressId"); + + b.Property("Rate"); + + b.Property("SIREN") + .IsRequired() + .HasAnnotation("MaxLength", 14); + + b.Property("WebSite"); + + b.HasKey("PerfomerId"); + }); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("DeviceOwnerId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithOne() + .HasForeignKey("Yavsc.Models.AccountBalance", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("PostalAddressId"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.HasOne("Yavsc.Models.AccountBalance") + .WithMany() + .HasForeignKey("BalanceId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.HasOne("Yavsc.Models.Market.BaseProduct") + .WithMany() + .HasForeignKey("ArticleId"); + + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("BookQueryId"); + + b.HasOne("Yavsc.Models.Billing.Estimate") + .WithMany() + .HasForeignKey("EstimateId"); + + b.HasOne("Yavsc.Models.Billing.NominativeCommand") + .WithMany() + .HasForeignKey("NominativeCommandId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.HasOne("Yavsc.Models.Billing.NominativeCommand") + .WithMany() + .HasForeignKey("CommandId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.NominativeCommand", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("ClientId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("AuthorId"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("ClientId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("LocationId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.HasOne("Yavsc.Models.Circle") + .WithMany() + .HasForeignKey("CircleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("MemberId"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.CommandSpecification", b => + { + b.HasOne("Yavsc.Models.Market.Service") + .WithMany() + .HasForeignKey("ServiceId"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ContextId"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ActivityCode"); + + b.HasOne("Yavsc.Models.Market.Service") + .WithMany() + .HasForeignKey("OfferId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("OrganisationAddressId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("PerfomerId"); + }); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/20160613142037_devices.cs b/build/approot/src/Yavsc/Migrations/20160613142037_devices.cs new file mode 100644 index 00000000..708a28eb --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160613142037_devices.cs @@ -0,0 +1,416 @@ +using System; +using Microsoft.Data.Entity.Migrations; + +namespace Yavsc.Migrations +{ + public partial class devices : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_Location_LocationId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CommandLine_Command_CommandId", table: "CommandLine"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_Estimate_Command_CommandId", table: "Estimate"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropColumn(name: "AllowedOrigin", table: "Client"); + migrationBuilder.DropColumn(name: "CommandId", table: "CommandLine"); + migrationBuilder.DropTable("Command"); + migrationBuilder.CreateTable( + name: "NominativeCommand", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + ClientId = table.Column(nullable: false), + CreationDate = table.Column(nullable: false), + Lag = table.Column(nullable: false), + PerformerId = table.Column(nullable: false), + Previsional = table.Column(nullable: true), + ValidationDate = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_NominativeCommand", x => x.Id); + table.ForeignKey( + name: "FK_NominativeCommand_ApplicationUser_ClientId", + column: x => x.ClientId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_NominativeCommand_PerformerProfile_PerformerId", + column: x => x.PerformerId, + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( + name: "CommandSpecification", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + ModelType = table.Column(nullable: true), + QueryViewName = table.Column(nullable: true), + ServiceId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CommandSpecification", x => x.Id); + table.ForeignKey( + name: "FK_CommandSpecification_Service_ServiceId", + column: x => x.ServiceId, + principalTable: "Service", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.AddColumn( + name: "NominativeCommandId", + table: "CommandLine", + nullable: true); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CommandLine_NominativeCommand_NominativeCommandId", + table: "CommandLine", + column: "NominativeCommandId", + principalTable: "NominativeCommand", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Estimate_NominativeCommand_CommandId", + table: "Estimate", + column: "CommandId", + principalTable: "NominativeCommand", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_Location_LocationId", + table: "BookQuery", + column: "LocationId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_CommandLine_NominativeCommand_NominativeCommandId", table: "CommandLine"); + migrationBuilder.DropForeignKey(name: "FK_Estimate_NominativeCommand_CommandId", table: "Estimate"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_Location_LocationId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropColumn(name: "NominativeCommandId", table: "CommandLine"); + migrationBuilder.DropTable("NominativeCommand"); + migrationBuilder.DropTable("CommandSpecification"); + migrationBuilder.CreateTable( + name: "Command", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + ClientId = table.Column(nullable: false), + CreationDate = table.Column(nullable: false), + Lag = table.Column(nullable: false), + PerformerId = table.Column(nullable: false), + Previsional = table.Column(nullable: true), + ValidationDate = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Command", x => x.Id); + table.ForeignKey( + name: "FK_Command_ApplicationUser_ClientId", + column: x => x.ClientId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Command_PerformerProfile_PerformerId", + column: x => x.PerformerId, + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.AddColumn( + name: "AllowedOrigin", + table: "Client", + nullable: true); + migrationBuilder.AddColumn( + name: "CommandId", + table: "CommandLine", + nullable: true); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_Location_LocationId", + table: "BookQuery", + column: "LocationId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CommandLine_Command_CommandId", + table: "CommandLine", + column: "CommandId", + principalTable: "Command", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Estimate_Command_CommandId", + table: "Estimate", + column: "CommandId", + principalTable: "Command", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.Designer.cs b/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.Designer.cs new file mode 100644 index 00000000..b000df2e --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.Designer.cs @@ -0,0 +1,653 @@ +using System; +using Microsoft.Data.Entity; +using Microsoft.Data.Entity.Infrastructure; +using Microsoft.Data.Entity.Metadata; +using Microsoft.Data.Entity.Migrations; +using Yavsc.Models; + +namespace Yavsc.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20160614010545_bookquery")] + partial class bookquery + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "7.0.0-rc1-16348"); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.Property("RegistrationId"); + + b.Property("DeviceOwnerId"); + + b.Property("Name"); + + b.HasKey("RegistrationId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b => + { + b.Property("Id"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("Name") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .HasAnnotation("Relational:Name", "RoleNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("RoleId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAnnotation("Relational:TableName", "AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.Property("LoginProvider"); + + b.Property("ProviderKey"); + + b.Property("ProviderDisplayName"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasAnnotation("Relational:TableName", "AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.HasKey("UserId", "RoleId"); + + b.HasAnnotation("Relational:TableName", "AspNetUserRoles"); + }); + + modelBuilder.Entity("Yavsc.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Address") + .IsRequired(); + + b.Property("Latitude"); + + b.Property("Longitude"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.Property("UserId"); + + b.Property("ContactCredits"); + + b.Property("Credits"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Activity", b => + { + b.Property("Code") + .HasAnnotation("MaxLength", 512); + + b.Property("ActorDenomination"); + + b.Property("Description"); + + b.Property("ModeratorGroupName"); + + b.Property("Name") + .IsRequired() + .HasAnnotation("MaxLength", 512); + + b.Property("Photo"); + + b.HasKey("Code"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Property("Id"); + + b.Property("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("DedicatedGoogleCalendar"); + + b.Property("Email") + .HasAnnotation("MaxLength", 256); + + b.Property("EmailConfirmed"); + + b.Property("LockoutEnabled"); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasAnnotation("MaxLength", 256); + + b.Property("NormalizedUserName") + .HasAnnotation("MaxLength", 256); + + b.Property("PasswordHash"); + + b.Property("PhoneNumber"); + + b.Property("PhoneNumberConfirmed"); + + b.Property("PostalAddressId"); + + b.Property("SecurityStamp"); + + b.Property("TwoFactorEnabled"); + + b.Property("UserName") + .HasAnnotation("MaxLength", 256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasAnnotation("Relational:Name", "EmailIndex"); + + b.HasIndex("NormalizedUserName") + .HasAnnotation("Relational:Name", "UserNameIndex"); + + b.HasAnnotation("Relational:TableName", "AspNetUsers"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id"); + + b.Property("Active"); + + b.Property("DisplayName"); + + b.Property("LogoutRedirectUri") + .HasAnnotation("MaxLength", 100); + + b.Property("RedirectUri"); + + b.Property("RefreshTokenLifeTime"); + + b.Property("Secret"); + + b.Property("Type"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id"); + + b.Property("ClientId") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.Property("ExpiresUtc"); + + b.Property("IssuedUtc"); + + b.Property("ProtectedTicket") + .IsRequired(); + + b.Property("Subject") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BalanceId") + .IsRequired(); + + b.Property("ExecDate"); + + b.Property("Impact"); + + b.Property("Reason") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ArticleId"); + + b.Property("BookQueryId"); + + b.Property("Comment"); + + b.Property("Count"); + + b.Property("RDVEstimateId"); + + b.Property("UnitaryCost"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.RDVEstimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AttachedFilesString"); + + b.Property("AttachedGraphicsString"); + + b.Property("CommandId"); + + b.Property("Description"); + + b.Property("Status"); + + b.Property("Title"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId") + .IsRequired(); + + b.Property("bcontent"); + + b.Property("modified"); + + b.Property("photo"); + + b.Property("posted"); + + b.Property("rate"); + + b.Property("title"); + + b.Property("visible"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId") + .IsRequired(); + + b.Property("CreationDate") + .ValueGeneratedOnAdd() + .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP"); + + b.Property("EventDate"); + + b.Property("Lag"); + + b.Property("LocationId"); + + b.Property("PerformerId") + .IsRequired(); + + b.Property("Previsional"); + + b.Property("ValidationDate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("OwnerId"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CircleId") + .IsRequired(); + + b.Property("MemberId") + .IsRequired(); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.Property("OwnerId"); + + b.Property("UserId"); + + b.HasKey("OwnerId", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.BaseProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Billing"); + + b.Property("ContextId"); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Pricing"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.OAuth.OAuth2Tokens", b => + { + b.Property("UserId"); + + b.Property("AccessToken"); + + b.Property("Expiration"); + + b.Property("ExpiresIn"); + + b.Property("RefreshToken"); + + b.Property("TokenType"); + + b.HasKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("Rate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Property("PerfomerId"); + + b.Property("AcceptGeoLocalisation"); + + b.Property("AcceptNotifications"); + + b.Property("AcceptPublicContact"); + + b.Property("Active"); + + b.Property("ActivityCode") + .IsRequired(); + + b.Property("MaxDailyCost"); + + b.Property("MinDailyCost"); + + b.Property("OfferId"); + + b.Property("OrganisationAddressId"); + + b.Property("Rate"); + + b.Property("SIREN") + .IsRequired() + .HasAnnotation("MaxLength", 14); + + b.Property("WebSite"); + + b.HasKey("PerfomerId"); + }); + + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("DeviceOwnerId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole") + .WithMany() + .HasForeignKey("RoleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithOne() + .HasForeignKey("Yavsc.Models.AccountBalance", "UserId"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("PostalAddressId"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.HasOne("Yavsc.Models.AccountBalance") + .WithMany() + .HasForeignKey("BalanceId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.HasOne("Yavsc.Models.Market.BaseProduct") + .WithMany() + .HasForeignKey("ArticleId"); + + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("BookQueryId"); + + b.HasOne("Yavsc.Models.Billing.RDVEstimate") + .WithMany() + .HasForeignKey("RDVEstimateId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.RDVEstimate", b => + { + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("CommandId"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("AuthorId"); + }); + + modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("ClientId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("LocationId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Circle", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.CircleMember", b => + { + b.HasOne("Yavsc.Models.Circle") + .WithMany() + .HasForeignKey("CircleId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("MemberId"); + }); + + modelBuilder.Entity("Yavsc.Models.Contact", b => + { + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ContextId"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.HasOne("Yavsc.Models.Activity") + .WithMany() + .HasForeignKey("ActivityCode"); + + b.HasOne("Yavsc.Models.Market.Service") + .WithMany() + .HasForeignKey("OfferId"); + + b.HasOne("Yavsc.Location") + .WithMany() + .HasForeignKey("OrganisationAddressId"); + + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("PerfomerId"); + }); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.cs b/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.cs new file mode 100644 index 00000000..4e33216b --- /dev/null +++ b/build/approot/src/Yavsc/Migrations/20160614010545_bookquery.cs @@ -0,0 +1,419 @@ +using System; +using System.Collections.Generic; +using Microsoft.Data.Entity.Migrations; + +namespace Yavsc.Migrations +{ + public partial class bookquery : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_CommandLine_Estimate_EstimateId", table: "CommandLine"); + migrationBuilder.DropForeignKey(name: "FK_CommandLine_NominativeCommand_NominativeCommandId", table: "CommandLine"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropColumn(name: "EstimateId", table: "CommandLine"); + migrationBuilder.DropColumn(name: "NominativeCommandId", table: "CommandLine"); + migrationBuilder.DropTable("Estimate"); + migrationBuilder.DropTable("CommandSpecification"); + migrationBuilder.DropTable("NominativeCommand"); + migrationBuilder.CreateTable( + name: "RDVEstimate", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + AttachedFilesString = table.Column(nullable: true), + AttachedGraphicsString = table.Column(nullable: true), + CommandId = table.Column(nullable: true), + Description = table.Column(nullable: true), + Status = table.Column(nullable: true), + Title = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_RDVEstimate", x => x.Id); + table.ForeignKey( + name: "FK_RDVEstimate_BookQuery_CommandId", + column: x => x.CommandId, + principalTable: "BookQuery", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.AlterColumn( + name: "LocationId", + table: "BookQuery", + nullable: true); + migrationBuilder.AddColumn( + name: "RDVEstimateId", + table: "CommandLine", + nullable: true); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CommandLine_RDVEstimate_RDVEstimateId", + table: "CommandLine", + column: "RDVEstimateId", + principalTable: "RDVEstimate", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles"); + migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance"); + migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact"); + migrationBuilder.DropForeignKey(name: "FK_CommandLine_RDVEstimate_RDVEstimateId", table: "CommandLine"); + migrationBuilder.DropForeignKey(name: "FK_Blog_ApplicationUser_AuthorId", table: "Blog"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_ApplicationUser_ClientId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember"); + migrationBuilder.DropForeignKey(name: "FK_Contact_ApplicationUser_OwnerId", table: "Contact"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganisationAddressId", table: "PerformerProfile"); + migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerfomerId", table: "PerformerProfile"); + migrationBuilder.DropColumn(name: "RDVEstimateId", table: "CommandLine"); + migrationBuilder.DropTable("RDVEstimate"); + migrationBuilder.CreateTable( + name: "NominativeCommand", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + ClientId = table.Column(nullable: false), + CreationDate = table.Column(nullable: false), + Lag = table.Column(nullable: false), + PerformerId = table.Column(nullable: false), + Previsional = table.Column(nullable: true), + ValidationDate = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_NominativeCommand", x => x.Id); + table.ForeignKey( + name: "FK_NominativeCommand_ApplicationUser_ClientId", + column: x => x.ClientId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_NominativeCommand_PerformerProfile_PerformerId", + column: x => x.PerformerId, + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( + name: "CommandSpecification", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + ModelType = table.Column(nullable: true), + QueryViewName = table.Column(nullable: true), + ServiceId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CommandSpecification", x => x.Id); + table.ForeignKey( + name: "FK_CommandSpecification_Service_ServiceId", + column: x => x.ServiceId, + principalTable: "Service", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( + name: "Estimate", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:Serial", true), + AttachedFilesString = table.Column(nullable: true), + AttachedGraphicsString = table.Column(nullable: true), + CommandId = table.Column(nullable: true), + Description = table.Column(nullable: true), + Status = table.Column(nullable: true), + Title = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Estimate", x => x.Id); + table.ForeignKey( + name: "FK_Estimate_NominativeCommand_CommandId", + column: x => x.CommandId, + principalTable: "NominativeCommand", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.AlterColumn( + name: "LocationId", + table: "BookQuery", + nullable: false); + migrationBuilder.AddColumn( + name: "EstimateId", + table: "CommandLine", + nullable: true); + migrationBuilder.AddColumn( + name: "NominativeCommandId", + table: "CommandLine", + nullable: true); + migrationBuilder.AddForeignKey( + name: "FK_IdentityRoleClaim_IdentityRole_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserClaim_ApplicationUser_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserLogin_ApplicationUser_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_IdentityRole_RoleId", + table: "AspNetUserRoles", + column: "RoleId", + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_IdentityUserRole_ApplicationUser_UserId", + table: "AspNetUserRoles", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_AccountBalance_ApplicationUser_UserId", + table: "AccountBalance", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BalanceImpact_AccountBalance_BalanceId", + table: "BalanceImpact", + column: "BalanceId", + principalTable: "AccountBalance", + principalColumn: "UserId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CommandLine_Estimate_EstimateId", + table: "CommandLine", + column: "EstimateId", + principalTable: "Estimate", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CommandLine_NominativeCommand_NominativeCommandId", + table: "CommandLine", + column: "NominativeCommandId", + principalTable: "NominativeCommand", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Blog_ApplicationUser_AuthorId", + table: "Blog", + column: "AuthorId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_ApplicationUser_ClientId", + table: "BookQuery", + column: "ClientId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_BookQuery_PerformerProfile_PerformerId", + table: "BookQuery", + column: "PerformerId", + principalTable: "PerformerProfile", + principalColumn: "PerfomerId", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_Circle_CircleId", + table: "CircleMember", + column: "CircleId", + principalTable: "Circle", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_CircleMember_ApplicationUser_MemberId", + table: "CircleMember", + column: "MemberId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Contact_ApplicationUser_OwnerId", + table: "Contact", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Activity_ActivityCode", + table: "PerformerProfile", + column: "ActivityCode", + principalTable: "Activity", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_Location_OrganisationAddressId", + table: "PerformerProfile", + column: "OrganisationAddressId", + principalTable: "Location", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_PerformerProfile_ApplicationUser_PerfomerId", + table: "PerformerProfile", + column: "PerfomerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/build/approot/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs b/build/approot/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs index 666c4d69..21362a2c 100644 --- a/build/approot/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/build/approot/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1,6 +1,8 @@ using System; using Microsoft.Data.Entity; using Microsoft.Data.Entity.Infrastructure; +using Microsoft.Data.Entity.Metadata; +using Microsoft.Data.Entity.Migrations; using Yavsc.Models; namespace Yavsc.Migrations @@ -13,6 +15,17 @@ namespace Yavsc.Migrations modelBuilder .HasAnnotation("ProductVersion", "7.0.0-rc1-16348"); + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => + { + b.Property("RegistrationId"); + + b.Property("DeviceOwnerId"); + + b.Property("Name"); + + b.HasKey("RegistrationId"); + }); + modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b => { b.Property("Id"); @@ -95,21 +108,6 @@ namespace Yavsc.Migrations b.HasAnnotation("Relational:TableName", "AspNetUserRoles"); }); - modelBuilder.Entity("Yavsc.Application", b => - { - b.Property("ApplicationID"); - - b.Property("DisplayName"); - - b.Property("LogoutRedirectUri"); - - b.Property("RedirectUri"); - - b.Property("Secret"); - - b.HasKey("ApplicationID"); - }); - modelBuilder.Entity("Yavsc.Location", b => { b.Property("Id") @@ -172,8 +170,6 @@ namespace Yavsc.Migrations b.Property("EmailConfirmed"); - b.Property("GoogleRegId"); - b.Property("LockoutEnabled"); b.Property("LockoutEnd"); @@ -210,6 +206,50 @@ namespace Yavsc.Migrations b.HasAnnotation("Relational:TableName", "AspNetUsers"); }); + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id"); + + b.Property("Active"); + + b.Property("DisplayName"); + + b.Property("LogoutRedirectUri") + .HasAnnotation("MaxLength", 100); + + b.Property("RedirectUri"); + + b.Property("RefreshTokenLifeTime"); + + b.Property("Secret"); + + b.Property("Type"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id"); + + b.Property("ClientId") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.Property("ExpiresUtc"); + + b.Property("IssuedUtc"); + + b.Property("ProtectedTicket") + .IsRequired(); + + b.Property("Subject") + .IsRequired() + .HasAnnotation("MaxLength", 50); + + b.HasKey("Id"); + }); + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => { b.Property("Id") @@ -228,16 +268,42 @@ namespace Yavsc.Migrations b.HasKey("Id"); }); - modelBuilder.Entity("Yavsc.Models.BaseProduct", b => + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => { b.Property("Id") .ValueGeneratedOnAdd(); + b.Property("ArticleId"); + + b.Property("BookQueryId"); + + b.Property("Comment"); + + b.Property("Count"); + + b.Property("RDVEstimateId"); + + b.Property("UnitaryCost"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.RDVEstimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AttachedFilesString"); + + b.Property("AttachedGraphicsString"); + + b.Property("CommandId"); + b.Property("Description"); - b.Property("Name"); + b.Property("Status"); - b.Property("Public"); + b.Property("Title"); b.HasKey("Id"); }); @@ -283,7 +349,7 @@ namespace Yavsc.Migrations b.Property("Lag"); - b.Property("LocationId"); + b.Property("LocationId"); b.Property("PerformerId") .IsRequired(); @@ -321,50 +387,6 @@ namespace Yavsc.Migrations b.HasKey("Id"); }); - modelBuilder.Entity("Yavsc.Models.Command", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClientId") - .IsRequired(); - - b.Property("CreationDate"); - - b.Property("Lag"); - - b.Property("PerformerId") - .IsRequired(); - - b.Property("Previsional"); - - b.Property("ValidationDate"); - - b.HasKey("Id"); - }); - - modelBuilder.Entity("Yavsc.Models.CommandLine", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ArticleId"); - - b.Property("BookQueryId"); - - b.Property("CommandId"); - - b.Property("Comment"); - - b.Property("Count"); - - b.Property("EstimateId"); - - b.Property("UnitaryCost"); - - b.HasKey("Id"); - }); - modelBuilder.Entity("Yavsc.Models.Contact", b => { b.Property("OwnerId"); @@ -374,27 +396,41 @@ namespace Yavsc.Migrations b.HasKey("OwnerId", "UserId"); }); - modelBuilder.Entity("Yavsc.Models.Estimate", b => + modelBuilder.Entity("Yavsc.Models.Market.BaseProduct", b => { b.Property("Id") .ValueGeneratedOnAdd(); - b.Property("AttachedFilesString"); - - b.Property("AttachedGraphicsString"); - - b.Property("CommandId"); - b.Property("Description"); - b.Property("Status"); + b.Property("Name"); - b.Property("Title"); + b.Property("Public"); b.HasKey("Id"); }); - modelBuilder.Entity("Yavsc.Models.OAuth2Tokens", b => + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Billing"); + + b.Property("ContextId"); + + b.Property("Description"); + + b.Property("Name"); + + b.Property("Pricing"); + + b.Property("Public"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.OAuth.OAuth2Tokens", b => { b.Property("UserId"); @@ -411,7 +447,19 @@ namespace Yavsc.Migrations b.HasKey("UserId"); }); - modelBuilder.Entity("Yavsc.Models.PerformerProfile", b => + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("Rate"); + + b.HasKey("Id"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => { b.Property("PerfomerId"); @@ -445,36 +493,11 @@ namespace Yavsc.Migrations b.HasKey("PerfomerId"); }); - modelBuilder.Entity("Yavsc.Models.Service", b => + modelBuilder.Entity("GoogleCloudMobileDeclaration", b => { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Billing"); - - b.Property("ContextId"); - - b.Property("Description"); - - b.Property("Name"); - - b.Property("Pricing"); - - b.Property("Public"); - - b.HasKey("Id"); - }); - - modelBuilder.Entity("Yavsc.Models.Skill", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Name"); - - b.Property("Rate"); - - b.HasKey("Id"); + b.HasOne("Yavsc.Models.ApplicationUser") + .WithMany() + .HasForeignKey("DeviceOwnerId"); }); modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b => @@ -530,6 +553,28 @@ namespace Yavsc.Migrations .HasForeignKey("BalanceId"); }); + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.HasOne("Yavsc.Models.Market.BaseProduct") + .WithMany() + .HasForeignKey("ArticleId"); + + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("BookQueryId"); + + b.HasOne("Yavsc.Models.Billing.RDVEstimate") + .WithMany() + .HasForeignKey("RDVEstimateId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.RDVEstimate", b => + { + b.HasOne("Yavsc.Models.Booking.BookQuery") + .WithMany() + .HasForeignKey("CommandId"); + }); + modelBuilder.Entity("Yavsc.Models.Blog", b => { b.HasOne("Yavsc.Models.ApplicationUser") @@ -547,7 +592,7 @@ namespace Yavsc.Migrations .WithMany() .HasForeignKey("LocationId"); - b.HasOne("Yavsc.Models.PerformerProfile") + b.HasOne("Yavsc.Models.Workflow.PerformerProfile") .WithMany() .HasForeignKey("PerformerId"); }); @@ -570,36 +615,6 @@ namespace Yavsc.Migrations .HasForeignKey("MemberId"); }); - modelBuilder.Entity("Yavsc.Models.Command", b => - { - b.HasOne("Yavsc.Models.ApplicationUser") - .WithMany() - .HasForeignKey("ClientId"); - - b.HasOne("Yavsc.Models.PerformerProfile") - .WithMany() - .HasForeignKey("PerformerId"); - }); - - modelBuilder.Entity("Yavsc.Models.CommandLine", b => - { - b.HasOne("Yavsc.Models.BaseProduct") - .WithMany() - .HasForeignKey("ArticleId"); - - b.HasOne("Yavsc.Models.Booking.BookQuery") - .WithMany() - .HasForeignKey("BookQueryId"); - - b.HasOne("Yavsc.Models.Command") - .WithMany() - .HasForeignKey("CommandId"); - - b.HasOne("Yavsc.Models.Estimate") - .WithMany() - .HasForeignKey("EstimateId"); - }); - modelBuilder.Entity("Yavsc.Models.Contact", b => { b.HasOne("Yavsc.Models.ApplicationUser") @@ -607,20 +622,20 @@ namespace Yavsc.Migrations .HasForeignKey("OwnerId"); }); - modelBuilder.Entity("Yavsc.Models.Estimate", b => + modelBuilder.Entity("Yavsc.Models.Market.Service", b => { - b.HasOne("Yavsc.Models.Command") + b.HasOne("Yavsc.Models.Activity") .WithMany() - .HasForeignKey("CommandId"); + .HasForeignKey("ContextId"); }); - modelBuilder.Entity("Yavsc.Models.PerformerProfile", b => + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => { b.HasOne("Yavsc.Models.Activity") .WithMany() .HasForeignKey("ActivityCode"); - b.HasOne("Yavsc.Models.Service") + b.HasOne("Yavsc.Models.Market.Service") .WithMany() .HasForeignKey("OfferId"); @@ -632,13 +647,6 @@ namespace Yavsc.Migrations .WithMany() .HasForeignKey("PerfomerId"); }); - - modelBuilder.Entity("Yavsc.Models.Service", b => - { - b.HasOne("Yavsc.Models.Activity") - .WithMany() - .HasForeignKey("ContextId"); - }); } } } diff --git a/build/approot/src/Yavsc/Model/ApplicationDbContext.cs b/build/approot/src/Yavsc/Model/ApplicationDbContext.cs index f426cccb..c4c15b7d 100644 --- a/build/approot/src/Yavsc/Model/ApplicationDbContext.cs +++ b/build/approot/src/Yavsc/Model/ApplicationDbContext.cs @@ -5,12 +5,16 @@ using System.Threading.Tasks; using Microsoft.AspNet.Authentication.OAuth; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity; +using Yavsc.Models.Auth; +using Yavsc.Models.Billing; using Yavsc.Models.Booking; +using Yavsc.Models.OAuth; +using Yavsc.Models.Workflow; namespace Yavsc.Models { - public class ApplicationDbContext : IdentityDbContext, IApplicationStore + public class ApplicationDbContext : IdentityDbContext { protected override void OnModelCreating(ModelBuilder builder) { @@ -26,7 +30,9 @@ namespace Yavsc.Models optionsBuilder.UseNpgsql(Startup.ConnectionString); } - public DbSet Applications { get; set; } + public DbSet Applications { get; set; } + + public DbSet RefreshTokens { get; set; } /// /// Activities referenced on this site /// @@ -57,15 +63,15 @@ namespace Yavsc.Models /// on his profile). /// /// - public DbSet Commands { get; set; } + public DbSet Commands { get; set; } /// /// Special commands, talking about /// a given place and date. /// /// - public DbSet BookQueries { get; set; } + public DbSet BookQueries { get; set; } public DbSet Performers { get; set; } - public DbSet Estimates { get; set; } + public DbSet Estimates { get; set; } public DbSet BankStatus { get; set; } public DbSet BankBook { get; set; } public DbSet Map { get; set; } @@ -151,10 +157,12 @@ namespace Yavsc.Models return Task.FromResult(0); } - IApplication IApplicationStore.FindApplication(string clientId) + Client FindApplication(string clientId) { return Applications.FirstOrDefault( - app=>app.ApplicationID == clientId); + app=>app.Id == clientId); } + + } } diff --git a/build/approot/src/Yavsc/Model/Auth/ApplicationTypes.cs b/build/approot/src/Yavsc/Model/Auth/ApplicationTypes.cs new file mode 100644 index 00000000..745fb027 --- /dev/null +++ b/build/approot/src/Yavsc/Model/Auth/ApplicationTypes.cs @@ -0,0 +1,10 @@ + + +namespace Yavsc.Models.Auth +{ + public enum ApplicationTypes: int + { + JavaScript = 0, + NativeConfidential = 1 + }; +} \ No newline at end of file diff --git a/build/approot/src/Yavsc/Model/Auth/Application.cs b/build/approot/src/Yavsc/Model/Auth/Client.cs similarity index 50% rename from build/approot/src/Yavsc/Model/Auth/Application.cs rename to build/approot/src/Yavsc/Model/Auth/Client.cs index 7e6f24b2..4de3a3bd 100644 --- a/build/approot/src/Yavsc/Model/Auth/Application.cs +++ b/build/approot/src/Yavsc/Model/Auth/Client.cs @@ -1,14 +1,20 @@ using System.ComponentModel.DataAnnotations; -namespace Yavsc +namespace Yavsc.Models.Auth { - public class Application : IApplication + public class Client { [Key] - public string ApplicationID { get; set; } + public string Id { get; set; } public string DisplayName { get; set; } public string RedirectUri { get; set; } + [MaxLength(100)] public string LogoutRedirectUri { get; set; } public string Secret { get; set; } + public ApplicationTypes Type { get; set; } + + public bool Active { get; set; } + public int RefreshTokenLifeTime { get; set; } + } } diff --git a/build/approot/src/Yavsc/Model/Auth/ExternalViewModel.cs b/build/approot/src/Yavsc/Model/Auth/ExternalViewModel.cs new file mode 100644 index 00000000..6c47489b --- /dev/null +++ b/build/approot/src/Yavsc/Model/Auth/ExternalViewModel.cs @@ -0,0 +1,33 @@ + +using System.ComponentModel.DataAnnotations; + +namespace Yavsc.Models.Auth { + +public class ExternalLoginViewModel + { + public string Name { get; set; } + + public string Url { get; set; } + + public string State { get; set; } + } + + public class RegisterExternalBindingModel + { + [Required] + public string UserName { get; set; } + + [Required] + public string Provider { get; set; } + + [Required] + public string ExternalAccessToken { get; set; } + + } + + public class ParsedExternalAccessToken + { + public string user_id { get; set; } + public string app_id { get; set; } + } +} diff --git a/build/approot/src/Yavsc/Model/Identity/OAuth2Tokens.cs b/build/approot/src/Yavsc/Model/Auth/OAuth2Tokens.cs similarity index 91% rename from build/approot/src/Yavsc/Model/Identity/OAuth2Tokens.cs rename to build/approot/src/Yavsc/Model/Auth/OAuth2Tokens.cs index 39284227..74551263 100644 --- a/build/approot/src/Yavsc/Model/Identity/OAuth2Tokens.cs +++ b/build/approot/src/Yavsc/Model/Auth/OAuth2Tokens.cs @@ -1,11 +1,11 @@ using System; using System.ComponentModel.DataAnnotations; -namespace Yavsc.Models +namespace Yavsc.Models.OAuth { /// /// OffLine OAuth2 Token - /// To use against the Google Calendar Api + /// To use against a third party Api /// public partial class OAuth2Tokens { @@ -17,7 +17,7 @@ namespace Yavsc.Models public string UserId { get; set; } /// - /// Expiration date & time + /// Expiration date & time /// /// public DateTime Expiration { get; set; } diff --git a/build/approot/src/Yavsc/Model/Auth/RefreshToken.cs b/build/approot/src/Yavsc/Model/Auth/RefreshToken.cs new file mode 100644 index 00000000..89642295 --- /dev/null +++ b/build/approot/src/Yavsc/Model/Auth/RefreshToken.cs @@ -0,0 +1,23 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace Yavsc.Models.Auth + { + + + public class RefreshToken + { + [Key] + public string Id { get; set; } + [Required] + [MaxLength(50)] + public string Subject { get; set; } + [Required] + [MaxLength(50)] + public string ClientId { get; set; } + public DateTime IssuedUtc { get; set; } + public DateTime ExpiresUtc { get; set; } + [Required] + public string ProtectedTicket { get; set; } + } + } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Model/Auth/Scope.cs b/build/approot/src/Yavsc/Model/Auth/Scope.cs index 2fa1ddff..89129087 100644 --- a/build/approot/src/Yavsc/Model/Auth/Scope.cs +++ b/build/approot/src/Yavsc/Model/Auth/Scope.cs @@ -1,6 +1,11 @@ +using System.ComponentModel.DataAnnotations; + namespace Yavsc.Models.Auth { public class Scope { + + + [Key] public string Id { get; set; } diff --git a/build/approot/src/Yavsc/Model/Auth/UserCredentials.cs b/build/approot/src/Yavsc/Model/Auth/UserCredentials.cs index 1f344969..96e02ad3 100644 --- a/build/approot/src/Yavsc/Model/Auth/UserCredentials.cs +++ b/build/approot/src/Yavsc/Model/Auth/UserCredentials.cs @@ -1,4 +1,6 @@ +using Yavsc.Models.OAuth; + namespace Yavsc.Models.Auth { public class UserCredential { diff --git a/build/approot/src/Yavsc/Model/Billing/Command.cs b/build/approot/src/Yavsc/Model/Billing/Command.cs new file mode 100644 index 00000000..fa9ffb36 --- /dev/null +++ b/build/approot/src/Yavsc/Model/Billing/Command.cs @@ -0,0 +1,9 @@ +using Yavsc.Models.Market; + +namespace Yavsc.Models.Billing +{ + + public class Command

where P:BaseProduct { + } + + } diff --git a/build/approot/src/Yavsc/Model/Billing/CommandLine.cs b/build/approot/src/Yavsc/Model/Billing/CommandLine.cs index 5829acc1..0e6d0b09 100644 --- a/build/approot/src/Yavsc/Model/Billing/CommandLine.cs +++ b/build/approot/src/Yavsc/Model/Billing/CommandLine.cs @@ -1,9 +1,9 @@ - using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Market; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { public class CommandLine { diff --git a/build/approot/src/Yavsc/Model/Billing/Estimate.cs b/build/approot/src/Yavsc/Model/Billing/Estimate.cs index 7f53089b..c4036975 100644 --- a/build/approot/src/Yavsc/Model/Billing/Estimate.cs +++ b/build/approot/src/Yavsc/Model/Billing/Estimate.cs @@ -3,10 +3,11 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; +using Yavsc.Models.Booking; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { - public partial class Estimate + public partial class RDVEstimate { [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } @@ -19,7 +20,7 @@ namespace Yavsc.Models ///

/// [ForeignKey("CommandId")] - public virtual Command Command { get; set; } + public BookQuery Query { get; set; } public string Description { get; set; } public int? Status { get; set; } public string Title { get; set; } diff --git a/build/approot/src/Yavsc/Model/Billing/EstimateAgreement.cs b/build/approot/src/Yavsc/Model/Billing/EstimateAgreement.cs index fad861f6..e9d8573a 100644 --- a/build/approot/src/Yavsc/Model/Billing/EstimateAgreement.cs +++ b/build/approot/src/Yavsc/Model/Billing/EstimateAgreement.cs @@ -1,9 +1,9 @@ using System; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { - public partial class EstimateAgreement : Estimate + public partial class EstimateAgreement : RDVEstimate { public DateTime ClientValidationDate { get; set; } } diff --git a/build/approot/src/Yavsc/Model/Billing/Commande.cs b/build/approot/src/Yavsc/Model/Billing/NominatvieCommande.cs similarity index 84% rename from build/approot/src/Yavsc/Model/Billing/Commande.cs rename to build/approot/src/Yavsc/Model/Billing/NominatvieCommande.cs index b1ad5879..116e2f51 100644 --- a/build/approot/src/Yavsc/Model/Billing/Commande.cs +++ b/build/approot/src/Yavsc/Model/Billing/NominatvieCommande.cs @@ -3,17 +3,13 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Market; +using Yavsc.Models.Workflow; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { - public class Command { - - /// - /// The command identifier - /// - [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public long Id {get; set; } + public class NominativeServiceCommand : Command { public string ClientId { get; set; } @@ -40,6 +36,10 @@ namespace Yavsc.Models public DateTime CreationDate {get; set;} public decimal? Previsional { get; set; } + /// + /// The bill + /// + /// public List Bill { get; set; } /// diff --git a/build/approot/src/Yavsc/Model/Billing/histoestim.cs b/build/approot/src/Yavsc/Model/Billing/histoestim.cs index 0bea1df8..3821bf5f 100644 --- a/build/approot/src/Yavsc/Model/Billing/histoestim.cs +++ b/build/approot/src/Yavsc/Model/Billing/histoestim.cs @@ -1,6 +1,6 @@ using System; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { public partial class histoestim { diff --git a/build/approot/src/Yavsc/Model/Billing/satisfaction.cs b/build/approot/src/Yavsc/Model/Billing/satisfaction.cs index dc3ce837..e579092a 100644 --- a/build/approot/src/Yavsc/Model/Billing/satisfaction.cs +++ b/build/approot/src/Yavsc/Model/Billing/satisfaction.cs @@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Yavsc.Models +namespace Yavsc.Models.Billing { public partial class satisfaction { diff --git a/build/approot/src/Yavsc/Model/Billing/writtings.cs b/build/approot/src/Yavsc/Model/Billing/writtings.cs index a50c1ba4..73014945 100644 --- a/build/approot/src/Yavsc/Model/Billing/writtings.cs +++ b/build/approot/src/Yavsc/Model/Billing/writtings.cs @@ -1,5 +1,5 @@ -namespace Yavsc.Models +namespace Yavsc.Models.Billing { public partial class writtings { diff --git a/build/approot/src/Yavsc/Model/Billing/wrtags.cs b/build/approot/src/Yavsc/Model/Billing/wrtags.cs index 6388b6c2..40e9cb3b 100644 --- a/build/approot/src/Yavsc/Model/Billing/wrtags.cs +++ b/build/approot/src/Yavsc/Model/Billing/wrtags.cs @@ -1,5 +1,5 @@ -namespace Yavsc.Models +namespace Yavsc.Models.Billing { public partial class wrtags { diff --git a/build/approot/src/Yavsc/Model/Booking/BookQuery.cs b/build/approot/src/Yavsc/Model/Booking/BookQuery.cs index 52d69fab..87e31b68 100644 --- a/build/approot/src/Yavsc/Model/Booking/BookQuery.cs +++ b/build/approot/src/Yavsc/Model/Booking/BookQuery.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Billing; namespace Yavsc.Models.Booking { @@ -8,29 +9,24 @@ namespace Yavsc.Models.Booking /// Query, for a date, with a given perfomer, at this given place. /// - public class BookQuery : Command { - - /// - /// Event date - /// - /// - [Required(ErrorMessageResourceName="ChooseAnEventDate", - ErrorMessageResourceType=typeof(Resources.YavscLocalisation)),Display(Name="EventDate")] - public DateTime EventDate { get; set; } - - /// - /// Location identifier - /// - /// - [Required] - public long LocationId { get; set; } - - /// - /// A Location for this event - /// - /// - [Required(ErrorMessage="SpecifyPlace"),Display(Name="Location"),ForeignKey("LocationId")] + public class BookQuery : NominativeServiceCommand { + /// + /// The command identifier + /// + [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long Id {get; set; } + public DateTime EventDate{get; set; } public Location Location { get; set; } + public BookQuery() + { + + } + + public BookQuery(Location eventLocation, DateTime eventDate) + { + Location = eventLocation; + EventDate = eventDate; + } } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Model/Booking/RendezVous.cs b/build/approot/src/Yavsc/Model/Booking/RendezVous.cs new file mode 100644 index 00000000..3a0dfe0f --- /dev/null +++ b/build/approot/src/Yavsc/Model/Booking/RendezVous.cs @@ -0,0 +1,38 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Market; + +namespace Yavsc.Models.Booking +{ + /// + /// A date, between two persons + /// + + public class RendezVous: Service { + // Haut les mains. + + /// + /// Event date + /// + /// + [Required(),Display(Name="EventDate")] + public DateTime EventDate { get; set; } + + /// + /// Location identifier + /// + /// + [Required] + public long LocationId { get; set; } + + /// + /// A Location for this event + /// + /// + [Required(ErrorMessage="SpecifyPlace"),Display(Name="Location"),ForeignKey("LocationId")] + public Location Location { get; set; } + + } + +} \ No newline at end of file diff --git a/build/approot/src/Yavsc/Model/Market/BaseProduct.cs b/build/approot/src/Yavsc/Model/Market/BaseProduct.cs index 5655fade..cd6b2525 100644 --- a/build/approot/src/Yavsc/Model/Market/BaseProduct.cs +++ b/build/approot/src/Yavsc/Model/Market/BaseProduct.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Yavsc.Models +namespace Yavsc.Models.Market { public partial class BaseProduct { diff --git a/build/approot/src/Yavsc/Model/Market/Catalog.cs b/build/approot/src/Yavsc/Model/Market/Catalog.cs index beb2e697..8d68c624 100644 --- a/build/approot/src/Yavsc/Model/Market/Catalog.cs +++ b/build/approot/src/Yavsc/Model/Market/Catalog.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Yavsc.Models { +namespace Yavsc.Models.Market { public class Catalog { diff --git a/build/approot/src/Yavsc/Model/Market/Product.cs b/build/approot/src/Yavsc/Model/Market/Product.cs index f6b52a94..9c500f9f 100644 --- a/build/approot/src/Yavsc/Model/Market/Product.cs +++ b/build/approot/src/Yavsc/Model/Market/Product.cs @@ -1,6 +1,6 @@ -namespace Yavsc.Models +namespace Yavsc.Models.Market { public partial class Product : BaseProduct { diff --git a/build/approot/src/Yavsc/Model/Market/Service.cs b/build/approot/src/Yavsc/Model/Market/Service.cs index a29df2d3..ba5a09aa 100644 --- a/build/approot/src/Yavsc/Model/Market/Service.cs +++ b/build/approot/src/Yavsc/Model/Market/Service.cs @@ -1,5 +1,5 @@ -namespace Yavsc.Models { +namespace Yavsc.Models.Market { using System.ComponentModel.DataAnnotations.Schema; public enum BillingMode {  diff --git a/build/approot/src/Yavsc/Model/Workflow/Activity.cs b/build/approot/src/Yavsc/Model/Workflow/Activity.cs index 356c4736..dd474fbb 100644 --- a/build/approot/src/Yavsc/Model/Workflow/Activity.cs +++ b/build/approot/src/Yavsc/Model/Workflow/Activity.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Market; namespace Yavsc.Models { @@ -35,5 +36,7 @@ namespace Yavsc.Models /// string ModeratorGroupName { get; set; } + + } } diff --git a/build/approot/src/Yavsc/Model/Workflow/PerformerProfile.cs b/build/approot/src/Yavsc/Model/Workflow/PerformerProfile.cs index c8cab44f..2941b0f1 100644 --- a/build/approot/src/Yavsc/Model/Workflow/PerformerProfile.cs +++ b/build/approot/src/Yavsc/Model/Workflow/PerformerProfile.cs @@ -1,7 +1,9 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using Yavsc.Models.Market; -namespace Yavsc.Models { +namespace Yavsc.Models.Workflow +{ public class PerformerProfile { @@ -55,6 +57,6 @@ namespace Yavsc.Models { public bool DoesBlog { get { return Performer?.Posts != null ? Performer.Posts.Count > 0 : false; } } - + } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Startup/Startup.DataProtection.cs b/build/approot/src/Yavsc/Startup/Startup.DataProtection.cs new file mode 100644 index 00000000..ac588904 --- /dev/null +++ b/build/approot/src/Yavsc/Startup/Startup.DataProtection.cs @@ -0,0 +1,41 @@ + +using System; +using System.IO; +using System.Web; +using Microsoft.AspNet.DataProtection.Infrastructure; +using Microsoft.Extensions.DependencyInjection; + +namespace Yavsc +{ + + public partial class Startup + { + public void ConfigureProtectionServices(IServiceCollection services) + { + + services.AddDataProtection(); + services.Add(ServiceDescriptor.Singleton(typeof(IApplicationDiscriminator), + typeof(SystemWebApplicationDiscriminator))); + + services.ConfigureDataProtection(configure => + { + configure.SetApplicationName(Configuration["Site:Title"]); + configure.SetDefaultKeyLifetime(TimeSpan.FromDays(45)); + configure.PersistKeysToFileSystem( + new DirectoryInfo(Configuration["DataProtection:Keys:Dir"])); + }); + + } + private sealed class SystemWebApplicationDiscriminator : IApplicationDiscriminator + { + private readonly Lazy _lazyDiscriminator = new Lazy(GetAppDiscriminatorCore); + + public string Discriminator => _lazyDiscriminator.Value; + + private static string GetAppDiscriminatorCore() + { + return HttpRuntime.AppDomainAppId; + } + } + } +} diff --git a/build/approot/src/Yavsc/Startup/Startup.OAuth.cs b/build/approot/src/Yavsc/Startup/Startup.OAuth.cs new file mode 100644 index 00000000..20a8bfb5 --- /dev/null +++ b/build/approot/src/Yavsc/Startup/Startup.OAuth.cs @@ -0,0 +1,202 @@ +using System; +using System.Security.Claims; +using Microsoft.AspNet.Authentication; +using Microsoft.AspNet.Authentication.Cookies; +using Microsoft.AspNet.Authentication.Facebook; +using Microsoft.AspNet.Authentication.JwtBearer; +using Microsoft.AspNet.Authentication.OAuth; +using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Http; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.OptionsModel; +using Microsoft.Extensions.WebEncoders; +using OAuth.AspNet.AuthServer; +using OAuth.AspNet.Tokens; +using Yavsc.Auth; +using Yavsc.Extensions; +using Yavsc.Models; + +namespace Yavsc +{ + + public partial class Startup + { + public static CookieAuthenticationOptions ExternalCookieAppOptions { get; private set; } + + public static IdentityOptions IdentityAppOptions { get; set; } + public static FacebookOptions FacebookAppOptions { get; private set; } + public static OAuthAuthorizationServerOptions OAuthServerAppOptions { get; private set; } + + public static OAuthOptions OAuthClientOptions { get; set; } + + public static YavscGoogleOptions YavscGoogleAppOptions { get; private set; } + public static MonoDataProtectionProvider ProtectionProvider { get; private set; } + + // public static CookieAuthenticationOptions BearerCookieOptions { get; private set; } + + private void ConfigureOAuthServices(IServiceCollection services) + { + services.Configure(options => options.SignInScheme = Constants.ApplicationAuthenticationSheme); + + services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); + // used by the YavscGoogleOAuth middelware (TODO drop it) + services.AddTransient(); + + services.AddAuthentication(options => + { + options.SignInScheme = Constants.ExternalAuthenticationSheme; + }); + + ProtectionProvider = new MonoDataProtectionProvider(Configuration["Site:Title"]); ; + services.AddInstance + (ProtectionProvider); + + services.AddIdentity( + option => + { + IdentityAppOptions = option; + option.User.AllowedUserNameCharacters += " "; + option.User.RequireUniqueEmail = true; + // option.Cookies.ApplicationCookieAuthenticationScheme = Constants.ApplicationAuthenticationSheme; + option.Cookies.ApplicationCookie.LoginPath = "/signin"; + // option.Cookies.ApplicationCookie.AuthenticationScheme = Constants.ApplicationAuthenticationSheme; + /* + option.Cookies.ApplicationCookie.DataProtectionProvider = protector; + option.Cookies.ApplicationCookie.LoginPath = new PathString(Constants.LoginPath.Substring(1)); + option.Cookies.ApplicationCookie.AccessDeniedPath = new PathString(Constants.AccessDeniedPath.Substring(1)); + option.Cookies.ApplicationCookie.AutomaticAuthenticate = true; + option.Cookies.ApplicationCookie.AuthenticationScheme = Constants.ApplicationAuthenticationSheme; + option.Cookies.ApplicationCookieAuthenticationScheme = Constants.ApplicationAuthenticationSheme; + option.Cookies.TwoFactorRememberMeCookie.ExpireTimeSpan = TimeSpan.FromDays(30); + option.Cookies.TwoFactorRememberMeCookie.DataProtectionProvider = protector; + option.Cookies.ExternalCookieAuthenticationScheme = Constants.ExternalAuthenticationSheme; + option.Cookies.ExternalCookie.AutomaticAuthenticate = true; + option.Cookies.ExternalCookie.AuthenticationScheme = Constants.ExternalAuthenticationSheme; + option.Cookies.ExternalCookie.DataProtectionProvider = protector; + */ + } + ).AddEntityFrameworkStores() + .AddTokenProvider>(Constants.EMailFactor) + .AddTokenProvider(Constants.DefaultFactor) + ; + + } + private void ConfigureOAuthApp(IApplicationBuilder app, SiteSettings settings) + { + app.UseIdentity(); + app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), + branch => + { + branch.UseJwtBearerAuthentication( + options => + { + options.AuthenticationScheme = JwtBearerDefaults.AuthenticationScheme; + options.AutomaticAuthenticate = true; + options.SecurityTokenValidators.Clear(); + options.SecurityTokenValidators.Add(new TicketDataFormatTokenValidator( + ProtectionProvider + )); + } + ); + + }); + app.UseWhen(context => !context.Request.Path.StartsWithSegments("/api"), + branch => + { + // External authentication shared cookie: + branch.UseCookieAuthentication(options => + { + ExternalCookieAppOptions = options; + options.AuthenticationScheme = Constants.ExternalAuthenticationSheme; + options.AutomaticAuthenticate = true; + options.ExpireTimeSpan = TimeSpan.FromMinutes(5); + options.LoginPath = new PathString(Constants.LoginPath.Substring(1)); + // TODO implement an access denied page + options.AccessDeniedPath = new PathString(Constants.LoginPath.Substring(1)); + }); + + + + var gvents = new OAuthEvents(); + YavscGoogleAppOptions = new YavscGoogleOptions + { + ClientId = Configuration["Authentication:Google:ClientId"], + ClientSecret = Configuration["Authentication:Google:ClientSecret"], + AccessType = "offline", + SaveTokensAsClaims = true, + UserInformationEndpoint = "https://www.googleapis.com/plus/v1/people/me", + Events = new OAuthEvents + { + OnCreatingTicket = async context => + { + using (var serviceScope = app.ApplicationServices.GetRequiredService() + .CreateScope()) + { + var gcontext = context as GoogleOAuthCreatingTicketContext; + context.Identity.AddClaim(new Claim(YavscClaimTypes.GoogleUserId, gcontext.GoogleUserId)); + var service = + serviceScope.ServiceProvider.GetService(); + await service.StoreTokenAsync(gcontext.GoogleUserId, context.TokenResponse); + } + } + } + }; + YavscGoogleAppOptions.Scope.Add("https://www.googleapis.com/auth/calendar"); + branch.UseMiddleware(YavscGoogleAppOptions); + + // Facebook + branch.UseFacebookAuthentication(options => + { + FacebookAppOptions = options; + options.AppId = Configuration["Authentication:Facebook:AppId"]; + options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; + options.Scope.Add("email"); + options.UserInformationEndpoint = "https://graph.facebook.com/v2.5/me?fields=id,name,email,first_name,last_name"; + }); + + branch.UseOAuthAuthorizationServer( + + options => + { + OAuthServerAppOptions = options; + options.AuthorizeEndpointPath = new PathString(Constants.AuthorizePath.Substring(1)); + options.TokenEndpointPath = new PathString(Constants.TokenPath.Substring(1)); + options.ApplicationCanDisplayErrors = true; + options.AllowInsecureHttp = true; + options.AuthenticationScheme = OAuthDefaults.AuthenticationType; + options.TokenDataProtector = ProtectionProvider.CreateProtector("Bearer protection"); + + options.Provider = new OAuthAuthorizationServerProvider + { + OnValidateClientRedirectUri = ValidateClientRedirectUri, + OnValidateClientAuthentication = ValidateClientAuthentication, + OnGrantResourceOwnerCredentials = GrantResourceOwnerCredentials, + OnGrantClientCredentials = GrantClientCredetails + }; + + options.AuthorizationCodeProvider = new AuthenticationTokenProvider + { + OnCreate = CreateAuthenticationCode, + OnReceive = ReceiveAuthenticationCode, + }; + + options.RefreshTokenProvider = new AuthenticationTokenProvider + { + OnCreate = CreateRefreshToken, + OnReceive = ReceiveRefreshToken, + }; + + options.AutomaticAuthenticate = true; + options.AutomaticChallenge = true; + } + ); + }); + + + + + } + } +} diff --git a/build/approot/src/Yavsc/Startup/Startup.OAuthHelpers.cs b/build/approot/src/Yavsc/Startup/Startup.OAuthHelpers.cs index e542e692..91dcb5e5 100644 --- a/build/approot/src/Yavsc/Startup/Startup.OAuthHelpers.cs +++ b/build/approot/src/Yavsc/Startup/Startup.OAuthHelpers.cs @@ -1,57 +1,116 @@ using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Security.Principal; using System.Threading.Tasks; +using Microsoft.AspNet.Identity; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using OAuth.AspNet.AuthServer; +using Yavsc.Helpers; +using Yavsc.Models; +using Yavsc.Models.Auth; namespace Yavsc { public partial class Startup { + private Client GetApplication(string clientId) + { + var dbContext = new ApplicationDbContext(); + var app = dbContext.Applications.FirstOrDefault(x => x.Id == clientId); + return app; + } private readonly ConcurrentDictionary _authenticationCodes = new ConcurrentDictionary(StringComparer.Ordinal); private Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context) { - var app = context.ApplicationStore.FindApplication(context.ClientId); - if (app!=null) - { - context.Validated(app.RedirectUri); - } + if (context == null) throw new InvalidOperationException("context == null"); + var app = GetApplication(context.ClientId); + if (app == null) return Task.FromResult(0); + Startup.logger.LogInformation($"ValidateClientRedirectUri: Validated ({app.RedirectUri})"); + context.Validated(app.RedirectUri); return Task.FromResult(0); } private Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { - string clientId,clientSecret; + string clientId, clientSecret; + if (context.TryGetBasicCredentials(out clientId, out clientSecret) || context.TryGetFormCredentials(out clientId, out clientSecret)) { - if (ValidateClientCredentials( - new OAuthValidateClientCredentialsContext(clientId,clientSecret,context.ApplicationStore) - )) + logger.LogInformation($"ValidateClientAuthentication: Got id&secret: ({clientId} {clientSecret})"); + var client = GetApplication(clientId); + if (client.Type == ApplicationTypes.NativeConfidential) { + if (string.IsNullOrWhiteSpace(clientSecret)) + { + context.SetError("invalid_clientId", "Client secret should be sent."); + return Task.FromResult(null); + } + else + { + // if (client.Secret != Helper.GetHash(clientSecret)) + // TODO store a hash in db, not the pass + if (client.Secret != clientSecret) + { + context.SetError("invalid_clientId", "Client secret is invalid."); + return Task.FromResult(null); + } + } + } + + if (!client.Active) + { + context.SetError("invalid_clientId", "Client is inactive."); + return Task.FromResult(null); + } + + if (client != null && client.Secret == clientSecret) + { + logger.LogInformation($"\\o/ ValidateClientAuthentication: Validated ({clientId})"); context.Validated(); } + else Startup.logger.LogInformation($":'( ValidateClientAuthentication: KO ({clientId})"); } + else Startup.logger.LogWarning($"ValidateClientAuthentication: neither Basic nor Form credential were found"); return Task.FromResult(0); } - private bool ValidateClientCredentials(OAuthValidateClientCredentialsContext context) + private async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { - var authapp = context.ApplicationStore.FindApplication(context.ClientId); - if (authapp == null) return false; - if (authapp.Secret == context.ClientSecret) return true; - return false; - } + logger.LogWarning($"GrantResourceOwnerCredentials task ... {context.UserName}"); - private Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) - { - ClaimsPrincipal principal = new ClaimsPrincipal(new ClaimsIdentity(new GenericIdentity(context.UserName, OAuthDefaults.AuthenticationType), context.Scope.Select(x => new Claim("urn:oauth:scope", x)))); + ApplicationUser user = null; + using (var usermanager = context.HttpContext.ApplicationServices.GetRequiredService>()) + { + user = await usermanager.FindByNameAsync(context.UserName); + if (await usermanager.CheckPasswordAsync(user,context.Password)) + { + + var claims = new List( + context.Scope.Select(x => new Claim("urn:oauth:scope", x)) + ); + claims.Add(new Claim(ClaimTypes.NameIdentifier,user.Id)); + claims.Add(new Claim(ClaimTypes.Email,user.Email)); + claims.AddRange((await usermanager.GetRolesAsync(user)).Select( + r => new Claim(ClaimTypes.Role,r) + ) ); + ClaimsPrincipal principal = new ClaimsPrincipal( + new ClaimsIdentity( + new GenericIdentity(context.UserName, OAuthDefaults.AuthenticationType), + claims) + ); + // TODO set a NameIdentifier, roles and scopes claims + context.HttpContext.User = principal; context.Validated(principal); - + } + } + return Task.FromResult(0); } @@ -66,6 +125,7 @@ namespace Yavsc private void CreateAuthenticationCode(AuthenticationTokenCreateContext context) { + logger.LogInformation("CreateAuthenticationCode"); context.SetToken(Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n")); _authenticationCodes[context.Token] = context.SerializeTicket(); } @@ -76,16 +136,26 @@ namespace Yavsc if (_authenticationCodes.TryRemove(context.Token, out value)) { context.DeserializeTicket(value); + logger.LogInformation("ReceiveAuthenticationCode: Success"); } } private void CreateRefreshToken(AuthenticationTokenCreateContext context) { + var uid = context.Ticket.Principal.GetUserId(); + logger.LogInformation($"CreateRefreshToken for {uid}"); + foreach (var c in context.Ticket.Principal.Claims) + logger.LogInformation($"| User claim: {c.Type} {c.Value}"); + context.SetToken(context.SerializeTicket()); } private void ReceiveRefreshToken(AuthenticationTokenReceiveContext context) { + var uid = context.Ticket.Principal.GetUserId(); + logger.LogInformation($"ReceiveRefreshToken for {uid}"); + foreach (var c in context.Ticket.Principal.Claims) + logger.LogInformation($"| User claim: {c.Type} {c.Value}"); context.DeserializeTicket(context.Token); } } diff --git a/build/approot/src/Yavsc/Startup/Startup.cs b/build/approot/src/Yavsc/Startup/Startup.cs index 143b9674..3d121689 100755 --- a/build/approot/src/Yavsc/Startup/Startup.cs +++ b/build/approot/src/Yavsc/Startup/Startup.cs @@ -1,22 +1,13 @@ using System; using System.Globalization; -using System.IdentityModel.Tokens; -using System.IO; using System.Reflection; -using System.Security.Claims; -using System.Web; using System.Web.Optimization; using Microsoft.AspNet.Authentication; -using Microsoft.AspNet.Authentication.OAuth; using Microsoft.AspNet.Authorization; using Microsoft.AspNet.Builder; -using Microsoft.AspNet.DataProtection.Infrastructure; using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Hosting; -using Microsoft.AspNet.Http; -using Microsoft.AspNet.Identity; -using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Localization; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.Filters; @@ -27,13 +18,10 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.PlatformAbstractions; -using Microsoft.Extensions.WebEncoders; using Microsoft.Net.Http.Headers; -using Yavsc.Auth; using Yavsc.Formatters; using Yavsc.Models; using Yavsc.Services; -using OAuth.AspNet.AuthServer; namespace Yavsc { @@ -41,8 +29,10 @@ namespace Yavsc public partial class Startup { public static string ConnectionString { get; private set; } - private RsaSecurityKey key; + public static string Authority { get; private set; } + public static string Audience { get; private set; } + private static ILogger logger; public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { // Set up configuration sources. @@ -97,7 +87,6 @@ namespace Yavsc new CultureInfo("fr") }; - // You must explicitly state which cultures your application supports. // These are the cultures the app supports for formatting numbers, dates, etc. options.SupportedCultures = supportedCultures; @@ -118,74 +107,26 @@ namespace Yavsc // return new ProviderCultureResult("en"); //})); }); - var keyParamsFileInfo = - new FileInfo(Configuration["DataProtection:RSAParamFile"]); - var keyParams = (keyParamsFileInfo.Exists) ? - RSAKeyUtils.GetKeyParameters(keyParamsFileInfo.Name) : - RSAKeyUtils.GenerateKeyAndSave(keyParamsFileInfo.Name); - key = new RsaSecurityKey(keyParams); - - services.Configure(options => - { - options.SignInScheme = "ServerCookie"; - }); - - services.Configure( - to => - { - to.Audience = Configuration["Site:Audience"]; - to.Issuer = Configuration["Site:Authority"]; - to.SigningCredentials = - new SigningCredentials(key, SecurityAlgorithms.RsaSha256Signature); - } - ); + services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); - services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); + // DataProtection + ConfigureProtectionServices(services); - - services.AddTransient(); - services.AddDataProtection(); - services.Add(ServiceDescriptor.Singleton(typeof(IApplicationDiscriminator), - typeof(SystemWebApplicationDiscriminator))); - - services.ConfigureDataProtection(configure => - { - configure.SetApplicationName(Configuration["Site:Title"]); - configure.SetDefaultKeyLifetime(TimeSpan.FromDays(45)); - configure.PersistKeysToFileSystem( - new DirectoryInfo(Configuration["DataProtection:Keys:Dir"])); - }); - - services.AddAuthentication( - op => op.SignInScheme = "ServerCookie" - ); // Add framework services. services.AddEntityFramework() .AddNpgsql() .AddDbContext(options => options.UseNpgsql(ConnectionString)) ; - services.AddIdentity( - option => - { - option.User.AllowedUserNameCharacters += " "; - option.User.RequireUniqueEmail = true; - option.Cookies.ApplicationCookie.DataProtectionProvider = - new MonoDataProtectionProvider(Configuration["Site:Title"]); - } - ).AddEntityFrameworkStores() - .AddTokenProvider>(Constants.EMailFactor) - .AddTokenProvider(Constants.DefaultFactor) - ; + - + ConfigureOAuthServices(services); // .AddTokenProvider(Constants.SMSFactor) // @@ -241,6 +182,7 @@ namespace Yavsc .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); + config.Filters.Add(new ProducesAttribute("application/json")); config.OutputFormatters.Add(new PdfFormatter()); }).AddFormatterMappings( @@ -263,8 +205,6 @@ namespace Yavsc services.AddTransient, Microsoft.AspNet.Authentication.SecureDataFormat>(); services.AddTransient, TicketDataFormat>(); - services.AddTransient(); - // Add application services. services.AddTransient(); services.AddTransient(); @@ -286,12 +226,13 @@ namespace Yavsc Startup.UserFilesDirName = siteSettings.Value.UserFiles.DirName; loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); + logger = loggerFactory.CreateLogger(); + app.UseStatusCodePagesWithReExecute("/Home/Status/{0}"); if (env.IsDevelopment()) { loggerFactory.MinimumLevel = LogLevel.Debug; app.UseDeveloperExceptionPage(); - app.UseStatusCodePagesWithReExecute("/Home/Status/{0}"); app.UseRuntimeInfoPage(); var epo = new ErrorPageOptions(); epo.SourceCodeLineCount = 20; @@ -331,201 +272,32 @@ namespace Yavsc } } - var googleOptions = new YavscGoogleOptions - { - ClientId = Configuration["Authentication:Google:ClientId"], - ClientSecret = Configuration["Authentication:Google:ClientSecret"], - AccessType = "offline", - SaveTokensAsClaims = true, - UserInformationEndpoint = "https://www.googleapis.com/plus/v1/people/me" - }; - var gvents = new OAuthEvents(); - - googleOptions.Events = new OAuthEvents - { - OnCreatingTicket = async context => - { - using (var serviceScope = app.ApplicationServices.GetRequiredService() - .CreateScope()) - { - var gcontext = context as GoogleOAuthCreatingTicketContext; - context.Identity.AddClaim(new Claim(YavscClaimTypes.GoogleUserId, gcontext.GoogleUserId)); - var service = - serviceScope.ServiceProvider.GetService(); - await service.StoreTokenAsync(gcontext.GoogleUserId, context.TokenResponse); - } - } - }; - - googleOptions.Scope.Add("https://www.googleapis.com/auth/calendar"); - app.UseIISPlatformHandler(options => { options.AuthenticationDescriptions.Clear(); - options.AutomaticAuthentication = true; + options.AutomaticAuthentication = false; }); + + Authority = siteSettings.Value.Authority; + Audience = siteSettings.Value.Audience; + + ConfigureOAuthApp(app,siteSettings.Value); ConfigureFileServerApp(app,siteSettings.Value,env); app.UseWebSockets(); - app.UseIdentity(); - - - /* app.UseOpenIdConnectServer(options => - { - options.Provider = new AuthorizationProvider(loggerFactory, - new UserTokenProvider()); - - // Register the certificate used to sign the JWT tokens. - // options.SigningCredentials.AddCertificate( - // assembly: typeof(Startup).GetTypeInfo().Assembly, - // resource: "Mvc.Server.Certificate.pfx", - // password: "Owin.Security.OpenIdConnect.Server"); - - // options.SigningCredentials.AddKey(key); - // Note: see AuthorizationController.cs for more - // information concerning ApplicationCanDisplayErrors. - options.ApplicationCanDisplayErrors = true; - options.AllowInsecureHttp = true; - options.AutomaticChallenge = true; - // options.AutomaticAuthenticate=true; - - - options.AuthorizationEndpointPath = new PathString("/connect/authorize"); - options.TokenEndpointPath = new PathString("/connect/authorize/accept"); - options.UseSlidingExpiration = true; - options.AllowInsecureHttp = true; - options.AuthenticationScheme = "oidc-server"; // was = OpenIdConnectDefaults.AuthenticationScheme || "oidc"; - options.LogoutEndpointPath = new PathString("/connect/logout"); - - // options.ValidationEndpointPath = new PathString("/connect/introspect"); - }); */ - - app.UseCookieAuthentication(options => - { - options.AutomaticAuthenticate = true; - options.AutomaticChallenge = true; - options.AuthenticationScheme = "ServerCookie"; - options.ExpireTimeSpan = TimeSpan.FromMinutes(5); - options.LoginPath = new PathString("/signin"); - options.LogoutPath = new PathString("/signout"); - }); - - app.UseMiddleware(googleOptions); - - // Facebook - app.UseFacebookAuthentication(options => - { - options.AppId = Configuration["Authentication:Facebook:AppId"]; - options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; - options.Scope.Add("email"); - options.UserInformationEndpoint = "https://graph.facebook.com/v2.5/me?fields=id,name,email,first_name,last_name"; - }); - - app.UseOAuthAuthorizationServer( - - options => - { - options.AuthorizeEndpointPath = new PathString("/signin"); - options.TokenEndpointPath = new PathString("/token"); - options.ApplicationCanDisplayErrors = true; - -#if DEBUG - options.AllowInsecureHttp = true; -#endif - - options.Provider = new OAuthAuthorizationServerProvider - { - OnValidateClientRedirectUri = ValidateClientRedirectUri, - OnValidateClientAuthentication = ValidateClientAuthentication, - OnGrantResourceOwnerCredentials = GrantResourceOwnerCredentials, - OnGrantClientCredentials = GrantClientCredetails - }; - - options.AuthorizationCodeProvider = new AuthenticationTokenProvider - { - OnCreate = CreateAuthenticationCode, - OnReceive = ReceiveAuthenticationCode, - }; - - options.RefreshTokenProvider = new AuthenticationTokenProvider - { - OnCreate = CreateRefreshToken, - OnReceive = ReceiveRefreshToken, - }; - - options.AutomaticAuthenticate = false; - } - ); - app.UseRequestLocalization(localizationOptions.Value, (RequestCulture)new RequestCulture((string)"fr")); - /* Generic OAuth (here GitHub): options.Notifications = new OAuthAuthenticationNotifications - { - OnGetUserInformationAsync = async context => - { - // Get the GitHub user - HttpRequestMessage userRequest = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint); - userRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken); - userRequest.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); - HttpResponseMessage userResponse = await context.Backchannel.SendAsync(userRequest, context.HttpContext.RequestAborted); - userResponse.EnsureSuccessStatusCode(); - var text = await userResponse.Content.ReadAsStringAsync(); - JObject user = JObject.Parse(text); - - var identity = new ClaimsIdentity( - context.Options.AuthenticationType, - ClaimsIdentity.DefaultNameClaimType, - ClaimsIdentity.DefaultRoleClaimType); - - JToken value; - var id = user.TryGetValue("id", out value) ? value.ToString() : null; - if (!string.IsNullOrEmpty(id)) - { - identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, id, ClaimValueTypes.String, context.Options.AuthenticationType)); - } - var userName = user.TryGetValue("login", out value) ? value.ToString() : null; - if (!string.IsNullOrEmpty(userName)) - { - identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, userName, ClaimValueTypes.String, context.Options.AuthenticationType)); - } - var name = user.TryGetValue("name", out value) ? value.ToString() : null; - if (!string.IsNullOrEmpty(name)) - { - identity.AddClaim(new Claim("urn:github:name", name, ClaimValueTypes.String, context.Options.AuthenticationType)); - } - var link = user.TryGetValue("url", out value) ? value.ToString() : null; - if (!string.IsNullOrEmpty(link)) - { - identity.AddClaim(new Claim("urn:github:url", link, ClaimValueTypes.String, context.Options.AuthenticationType)); - } - - context.Identity = identity; - } - }; */ - - app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); - app.UseSignalR(); } - private sealed class SystemWebApplicationDiscriminator : IApplicationDiscriminator - { - private readonly Lazy _lazyDiscriminator = new Lazy(GetAppDiscriminatorCore); - - public string Discriminator => _lazyDiscriminator.Value; - - private static string GetAppDiscriminatorCore() - { - return HttpRuntime.AppDomainAppId; - } - } + // Entry point for the application. public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run(args); } diff --git a/build/approot/src/Yavsc/ViewModels/Account/LoginViewModel.cs b/build/approot/src/Yavsc/ViewModels/Account/LoginViewModel.cs index fc35738a..1edf9c7a 100755 --- a/build/approot/src/Yavsc/ViewModels/Account/LoginViewModel.cs +++ b/build/approot/src/Yavsc/ViewModels/Account/LoginViewModel.cs @@ -5,25 +5,50 @@ using Microsoft.AspNet.Http.Authentication; namespace Yavsc.ViewModels.Account { - public class LoginViewModel + public class SignInViewModel { + /// + /// Local user's name. + /// + /// [Required] public string UserName { get; set; } + /// + /// Local user's password . + /// + /// [Required] [DataType(DataType.Password)] public string Password { get; set; } + /// + /// When true, asks for a two-factor identification + /// + /// [Display(Name = "Remember me?")] public bool RememberMe { get; set; } + + /// + /// Indicates the authentication provider'name chosen to authenticate, + /// contains "LOCAL" to choose the local application identity + /// and user password credentials. + /// + /// + public string Provider { get; set; } + /// - /// This value indicates the OAuth client method recieving the code, - /// in case of. + /// This value does NOT indicate the OAuth client method recieving the code, + /// but the one called once authorized. /// /// public string ReturnUrl { get; set; } - + + /// + /// Lists external identity provider descriptions. + /// + /// an enumeration of the descriptions. public IEnumerable ExternalProviders { get; set; } } } diff --git a/build/approot/src/Yavsc/ViewModels/Account/Me.cs b/build/approot/src/Yavsc/ViewModels/Account/Me.cs new file mode 100644 index 00000000..0278599d --- /dev/null +++ b/build/approot/src/Yavsc/ViewModels/Account/Me.cs @@ -0,0 +1,25 @@ +using System.Linq; + +namespace Yavsc.Models.Auth +{ + public class Me { + public Me(ApplicationUser user) + { + id = user.Id; + givenName = user.UserName; + emails = new string [] { user.Email } ; + roles = user.Roles.Select(r=>r.RoleId).ToArray(); + } + public string id { get; set; } + public string givenName { get; set; } + public string[] emails { get; set; } + public string[] roles { get; set; } + /// + /// Known as profile, could point to an avatar + /// + /// + public string url { get; set; } + + } + +} \ No newline at end of file diff --git a/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationHandlers.cs b/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationHandlers.cs index 215504ec..951f49ab 100644 --- a/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationHandlers.cs +++ b/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationHandlers.cs @@ -3,6 +3,8 @@ using System.IO; using System.Security.Claims; using Microsoft.AspNet.Authorization; using Yavsc.Models; +using Yavsc.Models.Billing; +using Yavsc.Models.Booking; namespace Yavsc { public class PrivateChatEntryRequirement : IAuthorizationRequirement @@ -77,9 +79,9 @@ public class BlogViewHandler : AuthorizationHandler } } - public class CommandViewHandler : AuthorizationHandler + public class CommandViewHandler : AuthorizationHandler { - protected override void Handle(AuthorizationContext context, ViewRequirement requirement, Command resource) + protected override void Handle(AuthorizationContext context, ViewRequirement requirement, BookQuery resource) { if (context.User.IsInRole("FrontOffice")) context.Succeed(requirement); @@ -91,9 +93,9 @@ public class BlogViewHandler : AuthorizationHandler } } - public class CommandEditHandler : AuthorizationHandler + public class CommandEditHandler : AuthorizationHandler { - protected override void Handle(AuthorizationContext context, EditRequirement requirement, Command resource) + protected override void Handle(AuthorizationContext context, EditRequirement requirement, BookQuery resource) { if (context.User.IsInRole("FrontOffice")) context.Succeed(requirement); @@ -108,7 +110,7 @@ public class BlogViewHandler : AuthorizationHandler protected override void Handle(AuthorizationContext context, PrivateChatEntryRequirement requirement) { if (!context.User.HasClaim(c => c.Type == "TemporaryBadgeExpiry" && - c.Issuer == Constants.Issuer)) + c.Issuer == Startup.Authority)) { return; } @@ -116,7 +118,7 @@ public class BlogViewHandler : AuthorizationHandler var temporaryBadgeExpiry = Convert.ToDateTime(context.User.FindFirst( c => c.Type == "TemporaryBadgeExpiry" && - c.Issuer == Constants.Issuer).Value); + c.Issuer == Startup.Authority).Value); if (temporaryBadgeExpiry > DateTime.Now) { @@ -130,7 +132,7 @@ public class BlogViewHandler : AuthorizationHandler protected override void Handle(AuthorizationContext context, PrivateChatEntryRequirement requirement) { if (!context.User.HasClaim(c => c.Type == "BadgeNumber" && - c.Issuer == Constants.Issuer)) + c.Issuer == Startup.Authority)) { return; } diff --git a/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationView.cs b/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationView.cs index 3259423b..0342e083 100644 --- a/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationView.cs +++ b/build/approot/src/Yavsc/ViewModels/Auth/AuthorisationView.cs @@ -1,11 +1,11 @@ +using System.Collections.Generic; +using Microsoft.Extensions.Primitives; - -using Microsoft.IdentityModel.Protocols.OpenIdConnect; - -namespace Yavsc +namespace Yavsc.Models.Auth { public class AuthorisationView {  - public OpenIdConnectMessage Message { get; set; } - public Application Application { get; set; } + public Scope[] Scopes { get; set; } + public string Message { get; set; } + } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/Account/Login.cshtml b/build/approot/src/Yavsc/Views/Account/legacyLogin.cshtml similarity index 52% rename from build/approot/src/Yavsc/Views/Account/Login.cshtml rename to build/approot/src/Yavsc/Views/Account/legacyLogin.cshtml index 2dfbba52..b339cef2 100755 --- a/build/approot/src/Yavsc/Views/Account/Login.cshtml +++ b/build/approot/src/Yavsc/Views/Account/legacyLogin.cshtml @@ -1,20 +1,18 @@ -@using System.Collections.Generic -@using Microsoft.AspNet.Http -@using Microsoft.AspNet.Http.Authentication -@model LoginViewModel -@inject SignInManager SignInManager +@using Microsoft.AspNet.Http.Authentication +@using Yavsc.ViewModels.Account +@model LoginViewModel @{ ViewData["Title"] = SR["Log in"]; } -

@ViewData["Title"]

-
-
-
-
-

@SR["Use a local account to log in."]

-
+
+

@ViewData["Title"]

+
+ +

@SR["Use a local account to log in"]

+ +
@@ -40,25 +38,24 @@
- +

- @SR["Register as a new user?"] + @SR["Register as a new user"]?

- @SR["Forgot your password?"] + @SR["Forgot your password"]?

+ + + + @Html.AntiForgeryToken() -
-
-
-
-

@SR["Use another service to log in."]

-
- @{ - var loginProviders = SignInManager.GetExternalAuthenticationSchemes().ToList(); - if (loginProviders.Count == 0) + +
+

@SR["Use another service to log in"]:

+ @if (Model.ExternalProviders?.Count() == 0) {

@@ -69,22 +66,13 @@ } else { -

-
-

- @foreach (var provider in loginProviders) - { - - } -

-
-
+ @foreach (var description in Model.ExternalProviders) { +
+ + + + @Html.AntiForgeryToken() +
} - } -
-
+ }
- -@section Scripts { - @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } -} diff --git a/build/approot/src/Yavsc/Views/Application/Create.cshtml b/build/approot/src/Yavsc/Views/Client/Create.cshtml similarity index 63% rename from build/approot/src/Yavsc/Views/Application/Create.cshtml rename to build/approot/src/Yavsc/Views/Client/Create.cshtml index 7ac14317..238d71b7 100644 --- a/build/approot/src/Yavsc/Views/Application/Create.cshtml +++ b/build/approot/src/Yavsc/Views/Client/Create.cshtml @@ -1,4 +1,4 @@ -@model Yavsc.Application +@model Yavsc.Models.Auth.Client @{ ViewData["Title"] = "Create"; @@ -8,9 +8,17 @@
-

Application

+

Client


+
+
+
+ + +
+
+
@@ -32,6 +40,13 @@
+
+ +
+ + +
+
@@ -39,6 +54,13 @@
+
+ +
+ @Html.DropDownList("Type") + +
+
diff --git a/build/approot/src/Yavsc/Views/Application/Delete.cshtml b/build/approot/src/Yavsc/Views/Client/Delete.cshtml similarity index 63% rename from build/approot/src/Yavsc/Views/Application/Delete.cshtml rename to build/approot/src/Yavsc/Views/Client/Delete.cshtml index 9f13eb84..0f0dc8aa 100644 --- a/build/approot/src/Yavsc/Views/Application/Delete.cshtml +++ b/build/approot/src/Yavsc/Views/Client/Delete.cshtml @@ -1,4 +1,4 @@ -@model Yavsc.Application +@model Yavsc.Models.Auth.Client @{ ViewData["Title"] = "Delete"; @@ -8,9 +8,15 @@

Are you sure you want to delete this?

-

Application

+

Client


+
+ @Html.DisplayNameFor(model => model.Active) +
+
+ @Html.DisplayFor(model => model.Active) +
@Html.DisplayNameFor(model => model.DisplayName)
@@ -29,12 +35,24 @@
@Html.DisplayFor(model => model.RedirectUri)
+
+ @Html.DisplayNameFor(model => model.RefreshTokenLifeTime) +
+
+ @Html.DisplayFor(model => model.RefreshTokenLifeTime) +
@Html.DisplayNameFor(model => model.Secret)
@Html.DisplayFor(model => model.Secret)
+
+ @Html.DisplayNameFor(model => model.Type) +
+
+ @Html.DisplayFor(model => model.Type) +
diff --git a/build/approot/src/Yavsc/Views/Application/Details.cshtml b/build/approot/src/Yavsc/Views/Client/Details.cshtml similarity index 53% rename from build/approot/src/Yavsc/Views/Application/Details.cshtml rename to build/approot/src/Yavsc/Views/Client/Details.cshtml index 905a2416..d4905039 100644 --- a/build/approot/src/Yavsc/Views/Application/Details.cshtml +++ b/build/approot/src/Yavsc/Views/Client/Details.cshtml @@ -1,4 +1,4 @@ -@model Yavsc.Application +@model Yavsc.Models.Auth.Client @{ ViewData["Title"] = "Details"; @@ -7,9 +7,21 @@

Details

-

Application

+

Client


+
+ @Html.DisplayNameFor(model => model.Id) +
+
+ @Html.DisplayFor(model => model.Id) +
+
+ @Html.DisplayNameFor(model => model.Active) +
+
+ @Html.DisplayFor(model => model.Active) +
@Html.DisplayNameFor(model => model.DisplayName)
@@ -29,10 +41,10 @@ @Html.DisplayFor(model => model.RedirectUri)
- @Html.DisplayNameFor(model => model.ApplicationID) + @Html.DisplayNameFor(model => model.RefreshTokenLifeTime)
- @Html.DisplayFor(model => model.ApplicationID) + @Html.DisplayFor(model => model.RefreshTokenLifeTime)
@Html.DisplayNameFor(model => model.Secret) @@ -40,9 +52,15 @@
@Html.DisplayFor(model => model.Secret)
+
+ @Html.DisplayNameFor(model => model.Type) +
+
+ @Html.DisplayFor(model => model.Type) +

- Edit | + Edit | Back to List

diff --git a/build/approot/src/Yavsc/Views/Application/Edit.cshtml b/build/approot/src/Yavsc/Views/Client/Edit.cshtml similarity index 62% rename from build/approot/src/Yavsc/Views/Application/Edit.cshtml rename to build/approot/src/Yavsc/Views/Client/Edit.cshtml index a54fab01..ae9f315d 100644 --- a/build/approot/src/Yavsc/Views/Application/Edit.cshtml +++ b/build/approot/src/Yavsc/Views/Client/Edit.cshtml @@ -1,4 +1,4 @@ -@model Yavsc.Application +@model Yavsc.Models.Auth.Client @{ ViewData["Title"] = "Edit"; @@ -8,10 +8,18 @@
-

Application

+

Client


- + +
+
+
+ + +
+
+
@@ -33,6 +41,13 @@
+
+ +
+ + +
+
@@ -40,6 +55,13 @@
+
+ +
+ @Html.DropDownList("Type") + +
+
diff --git a/build/approot/src/Yavsc/Views/Application/Index.cshtml b/build/approot/src/Yavsc/Views/Client/Index.cshtml similarity index 56% rename from build/approot/src/Yavsc/Views/Application/Index.cshtml rename to build/approot/src/Yavsc/Views/Client/Index.cshtml index 33bc002c..e2f4e32f 100644 --- a/build/approot/src/Yavsc/Views/Application/Index.cshtml +++ b/build/approot/src/Yavsc/Views/Client/Index.cshtml @@ -1,4 +1,4 @@ -@model IEnumerable +@model IEnumerable @{ ViewData["Title"] = "Index"; @@ -12,7 +12,7 @@ + + @foreach (var item in Model) { + + } diff --git a/build/approot/src/Yavsc/Views/Command/Create.cshtml b/build/approot/src/Yavsc/Views/Command/Create.cshtml index 0880db99..29df65f8 100644 --- a/build/approot/src/Yavsc/Views/Command/Create.cshtml +++ b/build/approot/src/Yavsc/Views/Command/Create.cshtml @@ -102,8 +102,9 @@ $(document).ready(function(){

@SR["Fill in your book query"]


-
+
+ @Html.ValidationSummary()
@Html.HiddenFor(model=>model.Client.Id) @Html.HiddenFor(model=>model.PerformerId) +
diff --git a/build/approot/src/Yavsc/Views/Home/AboutMarkdown.cshtml b/build/approot/src/Yavsc/Views/Home/AboutMarkdown.cshtml index 992614a0..1e25e0fb 100644 --- a/build/approot/src/Yavsc/Views/Home/AboutMarkdown.cshtml +++ b/build/approot/src/Yavsc/Views/Home/AboutMarkdown.cshtml @@ -4,10 +4,16 @@

@ViewData["Title"]

-Quelques extension à un Markdown de base : +Quelques extensions à un Markdown de base : -* les video et audio -* le tag bug = Bug#542 -* le tag annonce = A#542 +* les video et audio: `![video: Ep. 28 - La France en commun - Une invitation à écrire un nouveau projet d'émancipation humaine](/images/testVideo.mp4)` + +![video: Ep. 28 - La France en commun - Une invitation à écrire un nouveau projet d'émancipation humaine](/images/testVideo.mp4) + +à faire: + +* le tag "Numéro de ticket": `Ticket#6854` +* le tag "Titre d'article": `#1_great_title` +* le tag "User" = `@@(007, it'sme)` ou `@@james` diff --git a/build/approot/src/Yavsc/Views/OAuth/Authorize.cshtml b/build/approot/src/Yavsc/Views/OAuth/Authorize.cshtml new file mode 100644 index 00000000..554184f2 --- /dev/null +++ b/build/approot/src/Yavsc/Views/OAuth/Authorize.cshtml @@ -0,0 +1,29 @@ +@using Microsoft.AspNet.Http.Authentication +@using Microsoft.AspNet.WebUtilities +@using System.Security.Claims +@model Yavsc.Models.Auth.AuthorisationView +@{ + ViewBag.Title = @SR["Authorize"]; +} +

Authorization Server

+

OAuth2 Authorize

+ + +

Hello, @User.Identity.Name

+

@Model.Message

+

A third party application want to do the following on your behalf:

+
    + @if (Model.Scopes!=null) { + @foreach (var scope in Model.Scopes) + { +
  • @scope.Id: @scope.Description
  • + } + } +
+

+ + + +

+ + \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/OAuth/AuthorizeDenied.cshtml b/build/approot/src/Yavsc/Views/OAuth/AuthorizeDenied.cshtml new file mode 100644 index 00000000..83d4b8f5 --- /dev/null +++ b/build/approot/src/Yavsc/Views/OAuth/AuthorizeDenied.cshtml @@ -0,0 +1,17 @@ +@using Microsoft.AspNet.Http +@using System +@using System.Security.Claims +@{ + var error = Context.Items["oauth.Error"]; + var errorDescription = Context.Items["oauth.ErrorDescription"]; + var errorUri = Context.Items["oauth.ErrorUri"]; +} + + + + Authorization Denied + + +

Authorization denied

+ + \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/OAuth/AuthorizeError.cshtml b/build/approot/src/Yavsc/Views/OAuth/AuthorizeError.cshtml new file mode 100644 index 00000000..aa78dd1a --- /dev/null +++ b/build/approot/src/Yavsc/Views/OAuth/AuthorizeError.cshtml @@ -0,0 +1,20 @@ +@using Microsoft.AspNet.Http +@using System +@using System.Security.Claims +@{ + var error = Context.Items["oauth.Error"]; + var errorDescription = Context.Items["oauth.ErrorDescription"]; + var errorUri = Context.Items["oauth.ErrorUri"]; +} + + + + Authorize Error + + +

Identification & Authentication server

+

OAuth2 Authorize Error

+

Error: @error

+

@errorDescription

+ + \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/Shared/Authorize.cshtml b/build/approot/src/Yavsc/Views/Shared/Authorize.cshtml deleted file mode 100644 index 76efe101..00000000 --- a/build/approot/src/Yavsc/Views/Shared/Authorize.cshtml +++ /dev/null @@ -1,22 +0,0 @@ -@using AspNet.Security.OpenIdConnect.Extensions -@using Microsoft.IdentityModel.Protocols.OpenIdConnect - - -@model AuthorisationView - -
-

Authorization

- -

Do you wanna grant @Model.Application.DisplayName an access to your resources? (scopes requested: @Model.Message.Scope)

- -
- @Html.AntiForgeryToken() - - @foreach (var parameter in Model.Message.Parameters) { - - } - - - - -
diff --git a/build/approot/src/Yavsc/Views/Shared/SignIn.cshtml b/build/approot/src/Yavsc/Views/Shared/SignIn.cshtml index c1b1723d..468b07fe 100644 --- a/build/approot/src/Yavsc/Views/Shared/SignIn.cshtml +++ b/build/approot/src/Yavsc/Views/Shared/SignIn.cshtml @@ -1,7 +1,7 @@  @using Microsoft.AspNet.Http.Authentication @using Yavsc.ViewModels.Account -@model LoginViewModel +@model SignInViewModel @{ ViewData["Title"] = SR["Log in"]; } @@ -11,7 +11,7 @@

@SR["Use a local account to log in"]

- +
@@ -38,7 +38,7 @@
- +

@@ -47,7 +47,7 @@

@SR["Forgot your password"]?

- + @Html.AntiForgeryToken() @@ -56,23 +56,23 @@

@SR["Use another service to log in"]:

@if (Model.ExternalProviders.Count() == 0) - { -
-

- There are no external authentication services configured. See this article - for details on setting up this ASP.NET application to support logging in via external services. -

-
- } - else - { - @foreach (var description in Model.ExternalProviders) { - + { +
+

+ There are no external authentication services configured. See this article + for details on setting up this ASP.NET application to support logging in via external services. +

+
+ } + else + { + @foreach (var description in Model.ExternalProviders) { + - + @Html.AntiForgeryToken() - } + } } diff --git a/build/approot/src/Yavsc/Views/Shared/Status.cshtml b/build/approot/src/Yavsc/Views/Shared/Status.cshtml index 95d40853..d48b5121 100644 --- a/build/approot/src/Yavsc/Views/Shared/Status.cshtml +++ b/build/approot/src/Yavsc/Views/Shared/Status.cshtml @@ -2,6 +2,7 @@ @{ ViewBag.Title = "Oops!"; } +

@ViewBag.Title

Your request cannot be served

diff --git a/build/approot/src/Yavsc/Views/Shared/_GetAToken.cshtml b/build/approot/src/Yavsc/Views/Shared/_GetAToken.cshtml deleted file mode 100644 index 8a217944..00000000 --- a/build/approot/src/Yavsc/Views/Shared/_GetAToken.cshtml +++ /dev/null @@ -1,7 +0,0 @@ - - - @Html.AntiForgeryToken() - - - - \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/Shared/_LoginPartial.cshtml b/build/approot/src/Yavsc/Views/Shared/_LoginPartial.cshtml index 6d2e13b5..02ad72f5 100755 --- a/build/approot/src/Yavsc/Views/Shared/_LoginPartial.cshtml +++ b/build/approot/src/Yavsc/Views/Shared/_LoginPartial.cshtml @@ -19,7 +19,7 @@ else } \ No newline at end of file diff --git a/build/approot/src/Yavsc/Views/Shared/_PerformerPartial.cshtml b/build/approot/src/Yavsc/Views/Shared/_PerformerPartial.cshtml index 325c5910..243b696b 100644 --- a/build/approot/src/Yavsc/Views/Shared/_PerformerPartial.cshtml +++ b/build/approot/src/Yavsc/Views/Shared/_PerformerPartial.cshtml @@ -1,4 +1,4 @@ -@model Yavsc.Models.PerformerProfile +@model PerformerProfile
@Model.Performer?.UserName (rating: @Model.Rate%) @@ -18,13 +18,12 @@ } @if (!string.IsNullOrEmpty( - Model.Performer?.DedicatedGoogleCalendar)) + Model.Performer.DedicatedGoogleCalendar)) {
  • @SR["Exposes his Google calendar!"]
  • } - @if (!string.IsNullOrEmpty( - Model.Performer?.GoogleRegId)) + @if (Model.Performer.Devices?.Count>0) {
  • @SR["Uses the mobile application, and receives push notifications"]
  • diff --git a/build/approot/src/Yavsc/Views/_ViewImports.cshtml b/build/approot/src/Yavsc/Views/_ViewImports.cshtml index 9e8a6616..d29ca532 100755 --- a/build/approot/src/Yavsc/Views/_ViewImports.cshtml +++ b/build/approot/src/Yavsc/Views/_ViewImports.cshtml @@ -1,11 +1,14 @@ -@using Yavsc -@using Yavsc.Models -@using Yavsc.Models.Google -@using Yavsc.Models.Booking -@using Yavsc.ViewModels.Account -@using Yavsc.ViewModels.Manage +@using Yavsc; +@using Yavsc.Models; +@using Yavsc.Models.Google; +@using Yavsc.Models.Booking; +@using Yavsc.Models.Market; +@using Yavsc.Models.Billing; +@using Yavsc.Models.Workflow; +@using Yavsc.ViewModels.Account; +@using Yavsc.ViewModels.Manage; @using Yavsc.ViewModels.Calendar; -@using Microsoft.AspNet.Identity +@using Microsoft.AspNet.Identity; @using Microsoft.AspNet.Mvc; @using Microsoft.Extensions.Localization; @using Microsoft.AspNet.Mvc.Localization; diff --git a/build/approot/src/Yavsc/appsettings.json b/build/approot/src/Yavsc/appsettings.json index 873cff4f..04c8b10c 100755 --- a/build/approot/src/Yavsc/appsettings.json +++ b/build/approot/src/Yavsc/appsettings.json @@ -45,5 +45,12 @@ }, "RSAParamFile": "RSA-Params.json", "ExpiresInHours": 168 + }, + "Authentication": { + "Google": { + "ApiKey": "[Your ApiKey]", + "ClientId" : "[Your ClientId]", + "ClientSecret": "[Your ClientSecret" + } } } diff --git a/build/approot/src/Yavsc/gulpfile.js b/build/approot/src/Yavsc/gulpfile.js index 38931c03..3c42c319 100755 --- a/build/approot/src/Yavsc/gulpfile.js +++ b/build/approot/src/Yavsc/gulpfile.js @@ -48,7 +48,7 @@ gulp.task("min:css", function () { gulp.task("min", ["min:js", "min:css"]); -gulp.task('watch', shell.task(['MONO_OPTIONS=--debug ASPNET_ENV=Development dnx-watch web --configuration=Debug'])) +gulp.task('watch', shell.task(['ASPNET_ENV=Development dnx-watch web --configuration=Debug'])) gulp.task('build', shell.task(['dnu build --configuration=Debug'])) gulp.task('publish', shell.task(['dnu publish -o ../build'])) diff --git a/build/approot/src/Yavsc/project.json b/build/approot/src/Yavsc/project.json index 3811faab..b9be5731 100755 --- a/build/approot/src/Yavsc/project.json +++ b/build/approot/src/Yavsc/project.json @@ -67,16 +67,13 @@ "Microsoft.AspNet.Localization": "1.0.0-rc1-final", "Microsoft.AspNet.Mvc": "6.0.0-rc1-*", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-*", - "Microsoft.AspNet.Owin": "1.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", - "Microsoft.AspNet.SignalR.Owin": "1.2.2", "Microsoft.AspNet.SignalR.Core": "2.2.0", "Microsoft.AspNet.Server.WebListener": "1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-*", "Microsoft.AspNet.SignalR.JS": "2.2.0", "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-*", "Microsoft.AspNet.WebSockets.Server": "1.0.0-rc1-final", - "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-*", @@ -88,18 +85,15 @@ "Microsoft.Extensions.Globalization.CultureInfoCache": "1.0.0-rc1-final", "Microsoft.Extensions.Localization": "1.0.0-rc1-final", "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final", - "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4", - "Microsoft.Framework.DependencyInjection": "1.0.0-beta8", - "Microsoft.Extensions.CodeGeneration": "1.0.0-rc1-final", "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final", + "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4", + "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8", + "Microsoft.Framework.Configuration.Binder": "1.0.0-beta8", + "Microsoft.Framework.Configuration.Json": "1.0.0-beta8", "Microsoft.AspNet.Session": "1.0.0-rc1-final", "Microsoft.NETCore.Platforms": "1.0.1-beta-23516", - "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8", - "Microsoft.Framework.Configuration.Json": "1.0.0-beta8", - "Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-beta8", - "Microsoft.Framework.Configuration.Binder": "1.0.0-beta8", "Microsoft.AspNet.Web.Optimization": "1.1.3", "Microsoft.Extensions.WebEncoders.Core": "1.0.0-rc1-final", "Microsoft.AspNetCore.Authentication.OAuth": "0.0.1-alpha", @@ -109,7 +103,9 @@ "Microsoft.AspNet.DataProtection.SystemWeb": "1.0.0-rc1-final", "Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-rc1-final", "PayPalCoreSDK": "1.7.1", - "PayPalButtonManagerSDK": "2.10.109" + "PayPalButtonManagerSDK": "2.10.109", + "Microsoft.AspNet.Owin": "1.0.0-rc1-final", + "Microsoft.AspNet.Authentication.OAuth": "1.0.0-rc1-final" }, "commands": { "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://*:5000", @@ -143,6 +139,6 @@ "prerestore": "echo before restoring packages", "postrestore": "echo after restoring packages", "prepublish": "gulp min", - "postpublish": "echo launch ../build/postPublish.sh to push in prod." + "postpublish": "echo \" (cd ../build && . ./postPublish.sh) # to push in prod.\"" } } \ No newline at end of file diff --git a/build/approot/src/Yavsc/project.lock.json b/build/approot/src/Yavsc/project.lock.json index a4f307fb..b78a2389 100644 --- a/build/approot/src/Yavsc/project.lock.json +++ b/build/approot/src/Yavsc/project.lock.json @@ -415,26 +415,6 @@ "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} } }, - "Microsoft.AspNet.Authentication.OpenIdConnect/1.0.0-rc1-final": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "2.0.0-rc1-211161024" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core", - "System.Net.Http" - ], - "compile": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - } - }, "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -1407,19 +1387,6 @@ "jQuery": "1.6.4" } }, - "Microsoft.AspNet.SignalR.Owin/1.2.2": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.SignalR.Core": "1.2.2", - "Owin": "1.0.0" - }, - "compile": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - }, - "runtime": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - } - }, "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -2369,39 +2336,6 @@ "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} } }, - "Microsoft.Framework.DependencyInjection/1.0.0-beta8": { - "type": "package", - "dependencies": { - "Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-beta8" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - } - }, - "Microsoft.Framework.DependencyInjection.Abstractions/1.0.0-beta8": { - "type": "package", - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - } - }, "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { "type": "package", "frameworkAssemblies": [ @@ -3330,26 +3264,6 @@ "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} } }, - "Microsoft.AspNet.Authentication.OpenIdConnect/1.0.0-rc1-final": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "2.0.0-rc1-211161024" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core", - "System.Net.Http" - ], - "compile": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - } - }, "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -4322,19 +4236,6 @@ "jQuery": "1.6.4" } }, - "Microsoft.AspNet.SignalR.Owin/1.2.2": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.SignalR.Core": "1.2.2", - "Owin": "1.0.0" - }, - "compile": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - }, - "runtime": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - } - }, "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -5284,39 +5185,6 @@ "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} } }, - "Microsoft.Framework.DependencyInjection/1.0.0-beta8": { - "type": "package", - "dependencies": { - "Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-beta8" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - } - }, - "Microsoft.Framework.DependencyInjection.Abstractions/1.0.0-beta8": { - "type": "package", - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - } - }, "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { "type": "package", "frameworkAssemblies": [ @@ -6245,26 +6113,6 @@ "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll": {} } }, - "Microsoft.AspNet.Authentication.OpenIdConnect/1.0.0-rc1-final": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "2.0.0-rc1-211161024" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core", - "System.Net.Http" - ], - "compile": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll": {} - } - }, "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -7237,19 +7085,6 @@ "jQuery": "1.6.4" } }, - "Microsoft.AspNet.SignalR.Owin/1.2.2": { - "type": "package", - "dependencies": { - "Microsoft.AspNet.SignalR.Core": "1.2.2", - "Owin": "1.0.0" - }, - "compile": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - }, - "runtime": { - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll": {} - } - }, "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { "type": "package", "dependencies": { @@ -8199,39 +8034,6 @@ "lib/dnx451/Microsoft.Framework.ConfigurationModel.Json.dll": {} } }, - "Microsoft.Framework.DependencyInjection/1.0.0-beta8": { - "type": "package", - "dependencies": { - "Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-beta8" - }, - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll": {} - } - }, - "Microsoft.Framework.DependencyInjection.Abstractions/1.0.0-beta8": { - "type": "package", - "frameworkAssemblies": [ - "Microsoft.CSharp", - "mscorlib", - "System", - "System.Core" - ], - "compile": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll": {} - } - }, "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { "type": "package", "frameworkAssemblies": [ @@ -9115,19 +8917,6 @@ "Microsoft.AspNet.Authentication.OAuth.nuspec" ] }, - "Microsoft.AspNet.Authentication.OpenIdConnect/1.0.0-rc1-final": { - "type": "package", - "sha512": "t23VFfjomKBH7bbm0aT8Ht0QqvU5ECclpdID4lBGJ2YGEVz4t1lqxIeOO59VaSnae8LHZtoRywqOwFssF/1OQA==", - "files": [ - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.dll", - "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.xml", - "lib/dnxcore50/Microsoft.AspNet.Authentication.OpenIdConnect.dll", - "lib/dnxcore50/Microsoft.AspNet.Authentication.OpenIdConnect.xml", - "Microsoft.AspNet.Authentication.OpenIdConnect.1.0.0-rc1-final.nupkg", - "Microsoft.AspNet.Authentication.OpenIdConnect.1.0.0-rc1-final.nupkg.sha512", - "Microsoft.AspNet.Authentication.OpenIdConnect.nuspec" - ] - }, "Microsoft.AspNet.Authentication.Twitter/1.0.0-rc1-final": { "type": "package", "sha512": "kp0mcXaj0Vx+XY5Fwr/rDZBqs9yjzcwS6+KY3Dtk7UnmAuzVJ1Ld7/gLKkXXFzDyIh++lWfckRFQtVvV4kuydA==", @@ -9777,19 +9566,6 @@ "Microsoft.AspNet.SignalR.JS.nuspec" ] }, - "Microsoft.AspNet.SignalR.Owin/1.2.2": { - "type": "package", - "sha512": "LmR0YFPkuBq9MG4NkyL9UR8rMaiBwrjgjc0L+ttsGoAKU5VXfPD+dBWhbZJedUZjvIDwgcEuKCePkNnvvqLetg==", - "files": [ - "lib/net40/Microsoft.AspNet.SignalR.Owin.dll", - "lib/net40/Microsoft.AspNet.SignalR.Owin.xml", - "lib/net45/Microsoft.AspNet.SignalR.Owin.dll", - "lib/net45/Microsoft.AspNet.SignalR.Owin.xml", - "Microsoft.AspNet.SignalR.Owin.1.2.2.nupkg", - "Microsoft.AspNet.SignalR.Owin.1.2.2.nupkg.sha512", - "Microsoft.AspNet.SignalR.Owin.nuspec" - ] - }, "Microsoft.AspNet.StaticFiles/1.0.0-rc1-final": { "type": "package", "sha512": "JKFrKL6iwGzG+DO9vwP8fEbz3gHA9K6SoCE/Th/oIwxDEENNF2TAYjjAag5c0iJcaK3+X8+s2RkA/zZ+vWHOTg==", @@ -10610,40 +10386,6 @@ "Microsoft.Framework.ConfigurationModel.Json.nuspec" ] }, - "Microsoft.Framework.DependencyInjection/1.0.0-beta8": { - "type": "package", - "sha512": "6TmUFq/mt2l7QKoDyCuJOrDFcJ9A3ljZ/P3SBQMb+IYJ9J7XivUb47E+E9dQXhIjs5FpFHUGAE5Mxj2oKpxkfA==", - "files": [ - "lib/dnx451/Microsoft.Framework.DependencyInjection.dll", - "lib/dnx451/Microsoft.Framework.DependencyInjection.xml", - "lib/dnxcore50/Microsoft.Framework.DependencyInjection.dll", - "lib/dnxcore50/Microsoft.Framework.DependencyInjection.xml", - "lib/dotnet/Microsoft.Framework.DependencyInjection.dll", - "lib/dotnet/Microsoft.Framework.DependencyInjection.xml", - "lib/net45/Microsoft.Framework.DependencyInjection.dll", - "lib/net45/Microsoft.Framework.DependencyInjection.xml", - "Microsoft.Framework.DependencyInjection.1.0.0-beta8.nupkg", - "Microsoft.Framework.DependencyInjection.1.0.0-beta8.nupkg.sha512", - "Microsoft.Framework.DependencyInjection.nuspec" - ] - }, - "Microsoft.Framework.DependencyInjection.Abstractions/1.0.0-beta8": { - "type": "package", - "sha512": "7WL9hy+7bYDyBtIrrW5tw57dChBcizjSyuD0p5pVkay+gSseLqvAk72a4KldMmRgH//7t74d/YVrTvLhw83b7w==", - "files": [ - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.dll", - "lib/dnx451/Microsoft.Framework.DependencyInjection.Abstractions.xml", - "lib/dnxcore50/Microsoft.Framework.DependencyInjection.Abstractions.dll", - "lib/dnxcore50/Microsoft.Framework.DependencyInjection.Abstractions.xml", - "lib/dotnet/Microsoft.Framework.DependencyInjection.Abstractions.dll", - "lib/dotnet/Microsoft.Framework.DependencyInjection.Abstractions.xml", - "lib/net45/Microsoft.Framework.DependencyInjection.Abstractions.dll", - "lib/net45/Microsoft.Framework.DependencyInjection.Abstractions.xml", - "Microsoft.Framework.DependencyInjection.Abstractions.1.0.0-beta8.nupkg", - "Microsoft.Framework.DependencyInjection.Abstractions.1.0.0-beta8.nupkg.sha512", - "Microsoft.Framework.DependencyInjection.Abstractions.nuspec" - ] - }, "Microsoft.Framework.Runtime.Interfaces/1.0.0-beta4": { "type": "package", "sha512": "RrZdqvUm8QbgxnZQuafYGo6NezoKx7VqAfAtHVzoKBm3GSV8xlPh90u1fsGhNCv37xJNk5PuRCa4Mq27ko7pLw==", @@ -10874,7 +10616,6 @@ "sha512": "OseTFniKmyp76mEzOBwIKGBRS5eMoYNkMKaMXOpxx9jv88+b6mh1rSaw43vjBOItNhaLFG3d0a20PfHyibH5sw==", "files": [ "lib/net40/Owin.dll", - "Owin.1.0.0.nupkg", "Owin.1.0.0.nupkg.sha512", "Owin.nuspec" ] @@ -11764,16 +11505,13 @@ "Microsoft.AspNet.Localization >= 1.0.0-rc1-final", "Microsoft.AspNet.Mvc >= 6.0.0-rc1-*", "Microsoft.AspNet.Mvc.TagHelpers >= 6.0.0-rc1-*", - "Microsoft.AspNet.Owin >= 1.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-final", - "Microsoft.AspNet.SignalR.Owin >= 1.2.2", "Microsoft.AspNet.SignalR.Core >= 2.2.0", "Microsoft.AspNet.Server.WebListener >= 1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles >= 1.0.0-rc1-*", "Microsoft.AspNet.SignalR.JS >= 2.2.0", "Microsoft.AspNet.Tooling.Razor >= 1.0.0-rc1-*", "Microsoft.AspNet.WebSockets.Server >= 1.0.0-rc1-final", - "Microsoft.AspNet.Authentication.OpenIdConnect >= 1.0.0-rc1-final", "Microsoft.Extensions.Configuration.Abstractions >= 1.0.0-rc1-final", "Microsoft.Extensions.Configuration.FileProviderExtensions >= 1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Json >= 1.0.0-rc1-*", @@ -11785,17 +11523,15 @@ "Microsoft.Extensions.Globalization.CultureInfoCache >= 1.0.0-rc1-final", "Microsoft.Extensions.Localization >= 1.0.0-rc1-final", "Microsoft.Extensions.Localization.Abstractions >= 1.0.0-rc1-final", - "Microsoft.Framework.ConfigurationModel.Json >= 1.0.0-beta4", - "Microsoft.Framework.DependencyInjection >= 1.0.0-beta8", "Microsoft.Extensions.CodeGeneration >= 1.0.0-rc1-final", "Microsoft.Extensions.PlatformAbstractions >= 1.0.0-rc1-final", "Microsoft.Extensions.CodeGenerators.Mvc >= 1.0.0-rc1-final", + "Microsoft.Framework.ConfigurationModel.Json >= 1.0.0-beta4", + "Microsoft.Framework.Configuration.Abstractions >= 1.0.0-beta8", + "Microsoft.Framework.Configuration.Binder >= 1.0.0-beta8", + "Microsoft.Framework.Configuration.Json >= 1.0.0-beta8", "Microsoft.AspNet.Session >= 1.0.0-rc1-final", "Microsoft.NETCore.Platforms >= 1.0.1-beta-23516", - "Microsoft.Framework.Configuration.Abstractions >= 1.0.0-beta8", - "Microsoft.Framework.Configuration.Json >= 1.0.0-beta8", - "Microsoft.Framework.DependencyInjection.Abstractions >= 1.0.0-beta8", - "Microsoft.Framework.Configuration.Binder >= 1.0.0-beta8", "Microsoft.AspNet.Web.Optimization >= 1.1.3", "Microsoft.Extensions.WebEncoders.Core >= 1.0.0-rc1-final", "Microsoft.AspNetCore.Authentication.OAuth >= 0.0.1-alpha", @@ -11805,7 +11541,9 @@ "Microsoft.AspNet.DataProtection.SystemWeb >= 1.0.0-rc1-final", "Microsoft.AspNet.Authentication.JwtBearer >= 1.0.0-rc1-final", "PayPalCoreSDK >= 1.7.1", - "PayPalButtonManagerSDK >= 2.10.109" + "PayPalButtonManagerSDK >= 2.10.109", + "Microsoft.AspNet.Owin >= 1.0.0-rc1-final", + "Microsoft.AspNet.Authentication.OAuth >= 1.0.0-rc1-final" ], "DNX,Version=v4.5.1": [] } diff --git a/build/postPublish.sh b/build/postPublish.sh index 5605efc4..8ee72ef7 100755 --- a/build/postPublish.sh +++ b/build/postPublish.sh @@ -1,5 +1,5 @@ #!/bin/bash ssh root@localhost rm -rf /srv/www/yavscpre/approot/src rsync -ravu --exclude=.git --chown=www-data:www-data wwwroot approot root@localhost:/srv/www/yavscpre - +ssh root@localhost service kestrel restart diff --git a/build/wwwroot/images/testVideo.mp4 b/build/wwwroot/images/testVideo.mp4 new file mode 100644 index 00000000..6d820c0f Binary files /dev/null and b/build/wwwroot/images/testVideo.mp4 differ diff --git a/global.json b/global.json index 3e075f83..b4782fc2 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { - "projects": [ "Yavsc" ], + "projects": [ "Yavsc", "Yavsc.Api" ], "sdk": { "version": "1.0.0-rc1-update2", "runtime": "mono", diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..fca35e90 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,53 @@ +/// +"use strict"; + +var gulp = require("gulp"), + rimraf = require("rimraf"), + concat = require("gulp-concat"), + cssmin = require("gulp-cssmin"), + uglify = require("gulp-uglify"), + shell = require("gulp-shell"); + +var webroot = "./wwwroot/"; + +var paths = { + bower: "./bower_components/", + js: webroot + "js/**/*.js", + minJs: webroot + "js/**/*.min.js", + css: webroot + "css/**/*.css", + minCss: webroot + "css/**/*.min.css", + concatJsDest: webroot + "js/site.min.js", + concatCssDest: webroot + "css/site.min.css" +}; + +gulp.task("clean:js", function (cb) { + rimraf(paths.concatJsDest, cb); +}); + +gulp.task("clean:css", function (cb) { + rimraf(paths.concatCssDest, cb); +}); + +gulp.task("clean", ["clean:js", "clean:css"]); + +gulp.task("min:js", function () { + return gulp.src([paths.js, "!" + paths.minJs], { + base: "." + }) + .pipe(concat(paths.concatJsDest)) + .pipe(uglify()) + .pipe(gulp.dest(".")); +}); + +gulp.task("min:css", function () { + return gulp.src([paths.css, "!" + paths.minCss]) + .pipe(concat(paths.concatCssDest)) + .pipe(cssmin()) + .pipe(gulp.dest(".")); +}); + +gulp.task("min", ["min:js", "min:css"]); + + +gulp.task('build', shell.task(['dnu build --configuration=Debug'])) +gulp.task('publish', shell.task(['dnu publish -o ../build']))
    - @Html.DisplayNameFor(model => model.ApplicationID) + @Html.DisplayNameFor(model => model.Active) @Html.DisplayNameFor(model => model.DisplayName) @@ -23,16 +23,22 @@ @Html.DisplayNameFor(model => model.RedirectUri) + @Html.DisplayNameFor(model => model.RefreshTokenLifeTime) + @Html.DisplayNameFor(model => model.Secret) + @Html.DisplayNameFor(model => model.Type) +
    - @Html.DisplayFor(modelItem => item.ApplicationID) + @Html.DisplayFor(modelItem => item.Active) @Html.DisplayFor(modelItem => item.DisplayName) @@ -43,13 +49,19 @@ @Html.DisplayFor(modelItem => item.RedirectUri) + @Html.DisplayFor(modelItem => item.RefreshTokenLifeTime) + @Html.DisplayFor(modelItem => item.Secret) - Edit | - Details | - Delete + @Html.DisplayFor(modelItem => item.Type) + + Edit | + Details | + Delete