Commit ae17663f authored by Bart Boone's avatar Bart Boone 🤞🏼

Merge branch 'staging' into 'dev'

# Conflicts:
#   Solution/Chiro.Gap.UpdateApi/Chiro.Gap.UpdateApi.csproj
#   Solution/Chiro.Gap.UpdateApi/packages.config
parents a9201090 29e00cde
Pipeline #1371 failed with stages
in 3 minutes and 38 seconds
/*
* Copyright 2017 Chirojeugd-Vlaanderen vzw. See the NOTICE file at the
* top-level directory of this distribution, and at
* https://gapwiki.chiro.be/copyright
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Linq;
using DotNetCasClient.Security;
namespace Chiro.Cdf.Authentication.Dev
{
/// <summary>
/// Haalt het AD-nummer op uit de CasPrincipal, en geeft sowieso developerrechten.
/// DIT IS ENKEL TE GEBRUIKEN IN DEV!
/// </summary>
public class CasAuthenticatorDev: IAuthenticator
{
public UserInfo WieBenIk()
{
var principal = System.Web.HttpContext.Current.User as CasPrincipal;
return new UserInfo()
{
AdNr = int.Parse(principal.Assertion.Attributes["cas:ad_nummer"].First()),
// Normally no developer mode.
DeveloperMode = true
};
}
}
}
......@@ -42,9 +42,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CasAuthenticatorDev.cs" />
<Compile Include="CasAuthenticatorStaging.cs" />
<Compile Include="DummyAuthenticator.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
......
/*
* Copyright 2017 the GAP developers. See the NOTICE file at the
* top-level directory of this distribution, and at
* https://gapwiki.chiro.be/copyright
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Web;
namespace Chiro.Cdf.Authentication.Dev
{
/// <summary>
/// Dummy-authenticator voor dev, zodat het ook werkt als CAS niet beschikbaar is.
/// </summary>
public class DummyAuthenticator: IAuthenticator
{
/// <summary>
/// Levert een dummy-AD-nummer op, voor dev.
/// </summary>
/// <returns></returns>
public UserInfo WieBenIk()
{
// Voor dev 'berekenen' we een dummy-AD-nummer.
string userName;
userName = HttpContext.Current == null ? String.Empty : HttpContext.Current.User.Identity.Name;
if (String.IsNullOrEmpty(userName))
{
// Als we geen username vinden, geven we een dummy ad-nummer.
return new UserInfo()
{
AdNr = 42,
DeveloperMode = true
};
}
int result = 0;
foreach (char c in userName)
{
result += (int)c;
}
return new UserInfo
{
AdNr = result,
DeveloperMode = true
};
}
}
}
......@@ -22,6 +22,9 @@
</userSettings>
<applicationSettings>
<Chiro.Cdf.Authentication.Dev.Properties.Settings>
<setting name="TestAdNr" serializeAs="String">
<value>18</value>
</setting>
<setting name="DrupalDevRole" serializeAs="String">
<value>Toegang tot GAP-staging</value>
</setting>
......
......@@ -62,7 +62,7 @@
<value>lap-jve-8\private$\civisyncdev</value>
</setting>
<setting name="MaxBerichten" serializeAs="String">
<value>25</value>
<value>100</value>
</setting>
<setting name="Afzender" serializeAs="String">
<value>civisync@chiro.be</value>
......@@ -71,16 +71,17 @@
<value>helpdesk@chiro.be</value>
</setting>
<setting name="Onderwerp" serializeAs="String">
<value>Verdacht veel berichten in civisync-queue</value>
<value>Verdacht veel berichten in civisync-queue (STAGING)</value>
</setting>
<setting name="Inhoud" serializeAs="String">
<value>Dag helpdesker,
De message queue voor CiviSync loopt vol. Kun je dit
eens nakijken aub?
De message queue voor CiviSync-staging loopt vol.
Op staging is dat natuurlijk niet zo erg,
maar geef je dit even door aan Johan aub?
Meer info op de adminwiki:
https://adminwiki.chiro.be/devel:civisyncissues</value>
Bedankt!
</value>
</setting>
<setting name="Setting" serializeAs="String">
<value />
......
......@@ -37,7 +37,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("25")]
[global::System.Configuration.DefaultSettingValueAttribute("100")]
public int MaxBerichten {
get {
return ((int)(this["MaxBerichten"]));
......@@ -73,7 +73,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Verdacht veel berichten in civisync-queue")]
[global::System.Configuration.DefaultSettingValueAttribute("Verdacht veel berichten in civisync-queue (STAGING)")]
public string Onderwerp {
get {
return ((string)(this["Onderwerp"]));
......@@ -85,9 +85,9 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Dag helpdesker,\r\n\r\nDe message queue voor CiviSync loopt vol. Kun je dit\r\neens nak" +
"ijken aub?\r\n\r\nMeer info op de adminwiki:\r\nhttps://adminwiki.chiro.be/devel:civis" +
"yncissues")]
[global::System.Configuration.DefaultSettingValueAttribute("Dag helpdesker,\r\n\r\nDe message queue voor CiviSync-staging loopt vol. \r\nOp staging" +
" is dat natuurlijk niet zo erg,\r\nmaar geef je dit even door aan Johan aub?\r\n\r\nBe" +
"dankt!\r\n")]
public string Inhoud {
get {
return ((string)(this["Inhoud"]));
......@@ -108,6 +108,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio
this["Setting"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1000")]
......
......@@ -6,7 +6,7 @@
<Value Profile="(Default)">lap-jve-8\private$\civisyncdev</Value>
</Setting>
<Setting Name="MaxBerichten" Type="System.Int32" Scope="User">
<Value Profile="(Default)">25</Value>
<Value Profile="(Default)">100</Value>
</Setting>
<Setting Name="Afzender" Type="System.String" Scope="User">
<Value Profile="(Default)">civisync@chiro.be</Value>
......@@ -15,19 +15,23 @@
<Value Profile="(Default)">helpdesk@chiro.be</Value>
</Setting>
<Setting Name="Onderwerp" Type="System.String" Scope="User">
<Value Profile="(Default)">Verdacht veel berichten in civisync-queue</Value>
<Value Profile="(Default)">Verdacht veel berichten in civisync-queue (STAGING)</Value>
</Setting>
<Setting Name="Inhoud" Type="System.String" Scope="User">
<Value Profile="(Default)">Dag helpdesker,
De message queue voor CiviSync loopt vol. Kun je dit
eens nakijken aub?
De message queue voor CiviSync-staging loopt vol.
Op staging is dat natuurlijk niet zo erg,
maar geef je dit even door aan Johan aub?
Meer info op de adminwiki:
https://adminwiki.chiro.be/devel:civisyncissues</Value>
Bedankt!
</Value>
</Setting>
<Setting Name="Setting" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="LimitMembershipQuery" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1000</Value>
</Setting>
</Settings>
</SettingsFile>
\ No newline at end of file
......@@ -18,6 +18,7 @@
* limitations under the License.
*/
using System.Security.Permissions;
using Chiro.Gap.WorkerInterfaces;
using Chiro.Gap.ServiceContracts.Mappers;
using Chiro.Cdf.AdnrWcfExtension;
......
......@@ -32,7 +32,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<DefineConstants>TRACE;DEBUG;KIPDORP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
......@@ -121,6 +121,10 @@
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\tools\Chiro.CiviSync\Chiro.Kip.ServiceContracts\Chiro.Kip.ServiceContracts.csproj">
<Project>{6e81a10a-ad85-47a0-8b5d-70361f393cdd}</Project>
<Name>Chiro.Kip.ServiceContracts</Name>
</ProjectReference>
<ProjectReference Include="..\..\tools\Chiro.LoginService\Chiro.Ad.ServiceContracts\Chiro.Ad.ServiceContracts.csproj">
<Project>{D1E7BBDD-D833-4DC1-AF39-287448612425}</Project>
<Name>Chiro.Ad.ServiceContracts</Name>
......@@ -181,10 +185,6 @@
<Project>{8FAF739D-1058-4240-9466-BCA5DB8525D4}</Project>
<Name>Chiro.Gap.ServiceContracts</Name>
</ProjectReference>
<ProjectReference Include="..\Chiro.Gap.Services.Dev\Chiro.Gap.Services.Dev.csproj">
<Project>{DF253C73-7632-476E-B760-DEBA6D306E69}</Project>
<Name>Chiro.Gap.Services.Dev</Name>
</ProjectReference>
<ProjectReference Include="..\Chiro.Gap.SyncInterfaces\Chiro.Gap.SyncInterfaces.csproj">
<Project>{3ECF9801-795B-40FF-B19B-44A7C49DBB40}</Project>
<Name>Chiro.Gap.SyncInterfaces</Name>
......@@ -211,6 +211,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Properties\PublishProfiles\staging.pubxml" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
......
......@@ -19,6 +19,7 @@
using Chiro.Gap.ServiceContracts;
using Chiro.Gap.WorkerInterfaces;
using System.Diagnostics;
using System.Security.Permissions;
namespace Chiro.Gap.Services
{
......@@ -42,6 +43,8 @@ public class DbHacksService : BaseService, IDbHacksService
/// Erg lelijke hack die direct in de database schrijft om de aangelogde gebruiker
/// toegang te geven tot een testgroep.
/// </summary>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void WillekeurigeGroepToekennen()
{
Debug.Assert(_authenticatieMgr.AdNummerGet().HasValue);
......
......@@ -19,6 +19,7 @@
using System;
using System.Linq;
using System.Security.Permissions;
using System.ServiceModel;
using System.Web;
using Chiro.Ad.ServiceContracts;
......@@ -142,6 +143,8 @@ public GavChecker Gav
/// voorkomen, eventuele bestaande rechten niet in <paramref name="gebruikersRecht"/> blijven
/// onaangeroerd.
/// </param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void RechtenToekennen(int gelieerdePersoonId, GebruikersRecht gebruikersRecht)
{
var gelieerdePersoon = _gelieerdePersonenRepo.ByID(gelieerdePersoonId);
......@@ -197,6 +200,8 @@ public void RechtenToekennen(int gelieerdePersoonId, GebruikersRecht gebruikersR
/// <param name="persoonID">Id van persoon met af te nemen gebruikersrechten</param>
/// <param name="groepIDs">Id's van groepen waarvoor gebruikersrecht afgenomen moet worden.</param>
/// <remarks>In praktijk gebeurt dit door de vervaldatum in het verleden te leggen.</remarks>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void RechtenAfnemen(int persoonID, int[] groepIDs)
{
var persoon = _personenRepo.ByID(persoonID);
......@@ -224,6 +229,8 @@ public void RechtenAfnemen(int persoonID, int[] groepIDs)
/// Levert een redirection-url op naar de site van de verzekeraar
/// </summary>
/// <returns>Redirection-url naar de site van de verzekeraar</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public string VerzekeringsUrlGet(int groepID)
{
int? adNummer = _authenticatieMgr.AdNummerGet();
......@@ -290,6 +297,8 @@ public string VerzekeringsUrlGet(int groepID)
/// <summary>
/// Indien de ingelogde gebruiker lid is voor gegeven groep in het recentste werkjaar, dan wordt de id van dat lid terug gegeven
/// </summary>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int? AangelogdeGebruikerLidIdGet(int groepID)
{
int? adNummer = _authenticatieMgr.AdNummerGet();
......@@ -323,6 +332,8 @@ public string VerzekeringsUrlGet(int groepID)
/// <param name="adNummer">AD-nummer van een persoon.</param>
/// <param name="aanMaken">Als deze <c>true</c> is, wordt een 'stub' aangemaakt als de persoon niet wordt gevonden.</param>
/// <returns>Details van de persoon met gegeven <paramref name="adNummer"/>.</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public GebruikersDetail DetailsOphalen(int adNummer, bool aanMaken)
{
int? mijnAdNummer = _authenticatieMgr.AdNummerGet();
......
......@@ -20,6 +20,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using Chiro.Cdf.Poco;
using Chiro.Gap.Domain;
......@@ -162,12 +163,14 @@ protected virtual void Dispose(bool disposing)
#endregion
/// <summary>
/// Genereert de lijst van inteschrijven leden met de informatie die ze zouden krijgen als ze automagisch zouden worden ingeschreven, gebaseerd op een lijst van in te schrijven gelieerde personen.
/// </summary>
/// <param name="gelieerdePersoonIds">Lijst van gelieerde persoonIds waarover we inforamtie willen</param>
/// <returns>De LidIds van de personen die lid zijn gemaakt</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public List<InschrijvingsVoorstel> InschrijvingVoorstellen(IList<int> gelieerdePersoonIds)
{
// TODO (#195): van onderstaande logica moet wel wat verhuizen naar de workers!
......@@ -241,6 +244,8 @@ public List<InschrijvingsVoorstel> InschrijvingVoorstellen(IList<int> gelieerdeP
/// </summary>
/// <param name="inschrijfInfo">Lijst van informatie over wie lid moet worden</param>
/// <returns>Lijst met meer informatie over de personen die niet ingeschreven konden worden.</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public List<InschrijvingsVoorstel> Inschrijven(IList<InschrijvingsVerzoek> inschrijfInfo)
{
// TODO: Te veel nesting. Opkuis nodig.
......@@ -412,6 +417,8 @@ public List<InschrijvingsVoorstel> Inschrijven(IList<InschrijvingsVerzoek> insch
/// <param name="gelieerdePersoonIDs">Id's van de gelieerde personen</param>
/// <param name="foutBerichten">Als voor sommige personen die actie mislukte, bevat foutBerichten een
/// string waarin wat uitleg staat.</param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void Uitschrijven(IList<int> gelieerdePersoonIDs, out string foutBerichten)
{
// Deze code is tamelijk rommelig; gebruik ze niet als referentie-implementatie
......@@ -501,6 +508,8 @@ public void Uitschrijven(IList<int> gelieerdePersoonIDs, out string foutBerichte
/// </summary>
/// <param name="lidId">Id van lid met te vervangen functies</param>
/// <param name="functieIds">Ids van nieuwe functies voor het lid</param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void FunctiesVervangen(int lidId, IEnumerable<int> functieIds)
{
var lid = _ledenRepo.ByID(lidId);
......@@ -563,6 +572,8 @@ public void FunctiesVervangen(int lidId, IEnumerable<int> functieIds)
/// <param name="lidId">Lid dat nieuwe afdelingen moest krijgen</param>
/// <param name="afdelingsJaarIds">Id's van de te koppelen afdelingsjaren</param>
/// <returns>De GelieerdePersoonId van het lid</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int AfdelingenVervangen(int lidId, IList<int> afdelingsJaarIds)
{
var lid = _ledenRepo.ByID(lidId);
......@@ -579,6 +590,8 @@ public int AfdelingenVervangen(int lidId, IList<int> afdelingsJaarIds)
/// </summary>
/// <param name="lidIds">Id's van leden die nieuwe afdelingen moeten krijgen</param>
/// <param name="afdelingsJaarIds">Id's van de te koppelen afdelingsjaren</param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void AfdelingenVervangenBulk(IList<int> lidIds, IList<int> afdelingsJaarIds)
{
// Dit is een beetje een rare functie. Als er meerdere leden zijn, en meerdere afdelingen, dan moeten
......@@ -668,6 +681,8 @@ where afdelingsJaarIds.Contains(aj.ID)
/// <remarks>Dit is nogal een specifieke method. In ons domain model is gegeven dat verzekeringen gekoppeld zijn aan
/// personen, voor een bepaalde periode. Maar in eerste instantie zal alleen de verzekering loonverlies gebruikt worden,
/// die per definitie enkel voor leden bestaat.</remarks>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int LoonVerliesVerzekeren(int lidId)
{
PersoonsVerzekering persoonsVerzekering;
......@@ -714,6 +729,8 @@ public int LoonVerliesVerzekeren(int lidId)
/// </summary>
/// <param name="lidId">Id van lid met te togglen lidtype</param>
/// <returns>Lid-ID van lid</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int TypeToggle(int lidId)
{
var origineelLid = _ledenRepo.ByID(lidId);
......@@ -755,6 +772,8 @@ public int TypeToggle(int lidId)
/// </summary>
/// <param name="lidId">Id van het lid waarin we geinteresseerd zijn</param>
/// <returns>naam, afdeling en lidtype van het gegeven lid</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public LidAfdelingInfo AfdelingenOphalen(int lidId)
{
var lid = _ledenRepo.ByID(lidId);
......@@ -768,6 +787,8 @@ public LidAfdelingInfo AfdelingenOphalen(int lidId)
/// </summary>
/// <param name="lidId">Id op te halen lid</param>
/// <returns>Lidinfo; bevat info over gelieerde persoon, persoon, groep, afdelingen en functies</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public PersoonLidInfo DetailsOphalen(int lidId)
{
var lid = _ledenRepo.ByID(lidId);
......@@ -784,6 +805,8 @@ public PersoonLidInfo DetailsOphalen(int lidId)
/// </summary>
/// <param name="lidID">ID van een lid</param>
/// <returns>beperkte informatie over de person</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public PersoonInfo PersoonOphalen(int lidID)
{
var lid = _ledenRepo.ByID(lidID);
......@@ -800,6 +823,8 @@ public PersoonInfo PersoonOphalen(int lidID)
/// </summary>
/// <param name="lidID">ID van een lid</param>
/// <returns>beperkte lidinfo voor lid met gegeven <paramref name="lidID" /></returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public LidInfo LidInfoOphalen(int lidID)
{
var lid = _ledenRepo.ByID(lidID);
......@@ -825,6 +850,8 @@ public LidInfo LidInfoOphalen(int lidID)
/// Let er ook op dat je in de filter iets opgeeft als LidType
/// (Kind, Leiding of Alles), want anders krijg je niets terug.
/// </remarks>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public List<LidOverzicht> LijstZoekenLidOverzicht(LidFilter filter, bool metAdressen)
{
// Onderstaande throwt een exception als de filter zaken bevat waar je geen rechten op
......@@ -863,6 +890,8 @@ public List<LidOverzicht> LijstZoekenLidOverzicht(LidFilter filter, bool metAdre
/// Let er ook op dat je in de filter iets opgeeft als LidType
/// (Kind, Leiding of Alles), want anders krijg je niets terug.
/// </remarks>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public List<PersoonLidInfo> LijstZoekenPersoonLidInfo(LidFilter filter)
{
// Onderstaande throwt een exception als de filter zaken bevat waar je geen rechten op
......@@ -899,6 +928,8 @@ public List<PersoonLidInfo> ActieveLedenOphalen(int GroepId)
/// </summary>
/// <param name="lidId">Id van lid met te togglen lidgeld</param>
/// <returns>GelieerdePersoonId van lid</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int LidGeldToggle(int lidId)
{
var lid = _ledenRepo.ByID(lidId);
......
......@@ -20,6 +20,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security.Permissions;
using Chiro.Cdf.Poco;
using Chiro.Gap.Domain;
using Chiro.Gap.Poco.Model;
......@@ -155,6 +156,8 @@ protected virtual void Dispose(bool disposing)
/// <returns>Details van uitstappen</returns>
/// <remarks>We laten toe om inschrijvingen te doen voor uitstappen uit het verleden, om als dat
/// nodig is achteraf fouten in de administratie recht te zetten.</remarks>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public IEnumerable<UitstapInfo> OphalenVanGroep(int groepId, bool inschrijvenMogelijk)
{
IEnumerable<Uitstap> resultaat;
......@@ -193,6 +196,8 @@ public IEnumerable<UitstapInfo> OphalenVanGroep(int groepId, bool inschrijvenMog
/// </summary>
/// <param name="uitstapId">ID van de uitstap</param>
/// <returns>Details over de uitstap</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public UitstapOverzicht DetailsOphalen(int uitstapId)
{
var uitstap = _uitstappenRepo.ByID(uitstapId);
......@@ -205,6 +210,8 @@ public UitstapOverzicht DetailsOphalen(int uitstapId)
/// </summary>
/// <param name="deelnemerId">ID van de relevante deelnemer</param>
/// <returns>Informatie over de deelnemer met ID <paramref name="deelnemerId"/></returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public DeelnemerDetail DeelnemerOphalen(int deelnemerId)
{
var resultaat = _deelnemersRepo.Select().FirstOrDefault(dln => dln.ID == deelnemerId);
......@@ -218,6 +225,8 @@ public DeelnemerDetail DeelnemerOphalen(int deelnemerId)
/// </summary>
/// <param name="uitstapId">ID van de relevante uitstap</param>
/// <returns>Informatie over alle deelnemers van de uitstap met gegeven <paramref name="uitstapId"/></returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public IEnumerable<DeelnemerDetail> DeelnemersOphalen(int uitstapId)
{
var uitstap = _uitstappenRepo.ByID(uitstapId);
......@@ -237,6 +246,8 @@ public IEnumerable<DeelnemerDetail> DeelnemersOphalen(int uitstapId)
/// Een lijstje met de geregistreerde bivakken en feedback over wat er op dit moment moet gebeuren
/// voor de bivakaangifte
/// </returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public BivakAangifteLijstInfo BivakStatusOphalen(int groepId)
{
var resultaat = new BivakAangifteLijstInfo();
......@@ -296,6 +307,8 @@ where u.IsBivak
/// <returns>ID van de uitstap</returns>
/// <remark>De contactdeelnemer zit niet bij in <paramref name="info"/>, daar wordt dus
/// niets mee gedaan.</remark>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int Bewaren(int groepId, UitstapInfo info)
{
// Als de uitstap een ID heeft, moet een bestaande uitstap opgehaald worden.
......@@ -361,6 +374,8 @@ public int Bewaren(int groepId, UitstapInfo info)
/// <param name="uitstapId">ID van de uitstap</param>
/// <param name="plaatsNaam">Naam van de plaats</param>
/// <param name="adresInfo">Adres van de plaats</param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void PlaatsBewaren(int uitstapId, string plaatsNaam, AdresInfo adresInfo)
{
var uitstap = _uitstappenRepo.ByID(uitstapId);
......@@ -408,6 +423,8 @@ where String.Equals(p.Naam, plaatsNaam, StringComparison.OrdinalIgnoreCase)
/// </summary>
/// <param name="uitstapId">ID van de te verwijderen uitstap</param>
/// <returns>Verwijderd de uitstap en toont daarna het overzicht scherm</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void UitstapVerwijderen(int uitstapId)
{
var uitstap = _uitstappenRepo.ByID(uitstapId);
......@@ -438,6 +455,8 @@ public void UitstapVerwijderen(int uitstapId)
/// </summary>
/// <param name="deelnemerId">ID van de als contact in te stellen deelnemer</param>
/// <returns>De ID van de uitstap, ter controle, en misschien handig voor feedback</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int ContactInstellen(int deelnemerId)
{
var deelnemer = _deelnemersRepo.ByID(deelnemerId);
......@@ -494,6 +513,8 @@ public int ContactInstellen(int deelnemerId)
/// <param name="logistiekDeelnemer">Bepaalt of al dan niet ingeschreven wordt als
/// logistieker</param>
/// <returns>De basisgegevens van de uitstap, zodat die in de feedback gebruikt kan worden</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public UitstapInfo Inschrijven(IList<int> gelieerdePersoonIDs, int geselecteerdeUitstapId,
bool logistiekDeelnemer)
{
......@@ -548,6 +569,8 @@ public int ContactInstellen(int deelnemerId)
/// </summary>
/// <param name="deelnemerId">ID uit te schrijven deelnemer</param>
/// <returns>ID van de uitstap, ter controle, en handig voor feedback</returns>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public int Uitschrijven(int deelnemerId)
{
var deelnemer = _deelnemersRepo.ByID(deelnemerId);
......@@ -573,6 +596,8 @@ public int Uitschrijven(int deelnemerId)
/// Updatet een deelnemer op basis van de info in <paramref name="info"/>
/// </summary>
/// <param name="info">Info nodig voor de update</param>
// applying PrincipalPermission at class level doesn't seem to work for a WCF service.
[PrincipalPermission(SecurityAction.Demand, Role = @"GapServiceConsumers")]
public void DeelnemerBewaren(DeelnemerInfo info)
{
var deelnemer = _deelnemersRepo.ByID(info.DeelnemerID);
......
......@@ -25,13 +25,13 @@
<container>
<!-- channelProvider -->
<!-- De DevChannelProvider spreekt geen webservices aan. Dat is meestal goed voor dev :-) -->
<register type="Chiro.Cdf.ServiceHelper.IChannelProvider, Chiro.Cdf.ServiceHelper" mapTo="Chiro.Gap.Services.Dev.DevChannelProvider, Chiro.Gap.Services.Dev">
<lifetime type="PerOperationContext" />
</register>
<!--Als je wel met queues wil werken, dan gebruik je de ChannelFactoryChannelProvider. -->
<!--<register type="Chiro.Cdf.ServiceHelper.IChannelProvider, Chiro.Cdf.ServiceHelper" mapTo="Chiro.Cdf.ServiceHelper.ChannelFactoryChannelProvider, Chiro.Cdf.Servicehelper">
<!--<register type="Chiro.Cdf.ServiceHelper.IChannelProvider, Chiro.Cdf.ServiceHelper" mapTo="Chiro.Gap.Services.Dev.DevChannelProvider, Chiro.Gap.Services.Dev">
<lifetime type="PerOperationContext" />
</register>-->
<!-- Maar nu willen we messages naar de queue voor CiviSync, en AD-toegang. Dus: ChannelFactoryChannelProvider. -->
<register type="Chiro.Cdf.ServiceHelper.IChannelProvider, Chiro.Cdf.ServiceHelper" mapTo="Chiro.Cdf.ServiceHelper.ChannelFactoryChannelProvider, Chiro.Cdf.ServiceHelper">
<lifetime type="PerOperationContext" />
</register>
<!-- repositoryprovider -->
<register type="Chiro.Cdf.Poco.IContext, Chiro.Cdf.Poco" mapTo="Chiro.Gap.Poco.Context.ChiroGroepEntities, Chiro.Gap.Poco.Context">
<lifetime type="PerInstanceContext"/>
......@@ -101,8 +101,8 @@
<register type="Chiro.Gap.WorkerInterfaces.IAbonnementenManager, Chiro.Gap.WorkerInterfaces" mapTo="Chiro.Gap.Workers.AbonnementenManager, Chiro.Gap.Workers">
<lifetime type="PerOperationContext" />
</register>
<!-- geen intranet-aanroepen in (lokale) dev -->
<register type="Chiro.Cdf.Intranet.IMailadrescontrole, Chiro.Cdf.Intranet" mapTo="Chiro.Cdf.Intranet.FakeMailadrescontrole, Chiro.Cdf.Intranet">
<!-- Voor staging kijken we de e-mailadressen na via het intranet -->
<register type="Chiro.Cdf.Intranet.IMailadrescontrole, Chiro.Cdf.Intranet" mapTo="Chiro.Cdf.Intranet.Mailadrescontrole, Chiro.Cdf.Intranet">
<lifetime type="PerOperationContext" />
</register>
<!-- de syncinterfaces -->
......@@ -182,8 +182,7 @@
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />
<bindings>
<!-- De msmq-binding voor de CiviSync. Laat ons die uitzetten in dev, want ze geeft problemen onder Linux. -->
<!---
<!-- netMsmqBinding wordt gebruikt voor CiviSync. Is dus relevant in staging. -->
<netMsmqBinding>
<binding name="NetMsmqBinding_ISyncPersoonService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" deadLetterQueue="System" durable="true" exactlyOnce="true" maxReceivedMessageSize="65536" maxRetryCycles="2" receiveErrorHandling="Reject" receiveRetryCount="5" retryCycleDelay="00:30:00" timeToLive="1.00:00:00" useSourceJournal="false" useMsmqTracing="false" queueTransferProtocol="Native" maxBufferPoolSize="524288" useActiveDirectory="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
......@@ -193,24 +192,21 @@
</security>
</binding>
</netMsmqBinding>
-->
<!-- Onderstaande binding wordt gebruikt door de services van de backend. Deze services dus :-) -->
<basicHttpBinding>
<wsHttpBinding>
<!-- maxReceivedMessageSize groot genoeg, opdat Chiro Schelle ook alle lidvoorstellen
tegelijk kan krijgen bij de jaarovergang. -->
<binding name="ChiroBinding" closeTimeout="00:00:30" openTimeout="00:00:30" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxReceivedMessageSize="260000"/>
</basicHttpBinding>
<binding name="ChiroWshttpBinding" closeTimeout="00:00:30" openTimeout="00:00:30" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxReceivedMessageSize="260000"/>
</wsHttpBinding>
</bindings>
<!-- Clientdefinities hieronder zijn enkel relevant als je kipsync of de
loginservice wilt gebruiken. Meestal niet nodig voor dev. -->
<!---
<client>
<endpoint address="net.msmq://localhost/private/civisyncdev" binding="netMsmqBinding" bindingConfiguration="NetMsmqBinding_ISyncPersoonService" contract="Chiro.Kip.ServiceContracts.ISyncPersoonService" />
<endpoint address="http://localhost:50024/AdService.svc" binding="wsHttpBinding" bindingConfiguration="ChiroWshttpBinding" contract="Chiro.Ad.ServiceContracts.IAdService" />
<endpoint address="http://localhost:50024/AdService.svc" binding="wsHttpBinding"
bindingConfiguration="ChiroWshttpBinding" contract="Chiro.Ad.ServiceContracts.IAdService" />
</client>
-->
<diagnostics performanceCounters="Off">
<messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false" logMessagesAtTransportLevel="false" />
</diagnostics>
......@@ -235,7 +231,7 @@
</behaviors>
<services>
<service behaviorConfiguration="GapServiceBehavior" name="Chiro.Gap.Services.GroepenService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="ChiroBinding" contract="Chiro.Gap.ServiceContracts.IGroepenService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="ChiroWshttpBinding" contract="Chiro.Gap.ServiceContracts.IGroepenService">
<identity>
<dns value="localhost" />
</identity>
......@@ -243,7 +239,7 @@
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="GapServiceBehavior" name="Chiro.Gap.Services.DbHacksService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="ChiroBinding" contract="Chiro.Gap.ServiceContracts.IDbHacksService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="ChiroWshttpBinding" contract="Chiro.Gap.ServiceContracts.IDbHacksService">
<identity>
<dns value="localhost" />
</identity>
......@@ -251,7 +247,7 @@