From d3dc24db5c5cfb2d33bacebb2757240db975c93d Mon Sep 17 00:00:00 2001 From: Thomas Hounsell Date: Tue, 4 Aug 2015 21:07:31 +0100 Subject: [PATCH] Surprise MongoDB Move, PWestminster App Shock move to MongoDB (issue #18) started with integrating the MongoDB MemberProvider from checkHashes. Still to complete, though user registration and role setup confirmed working. I've also started a Project Westminster App to tide us over til we get the chance to do a proper application with a new API that will be much easier once the MongoDB switch is complete. --- .vs/config/applicationhost.config | 2 +- BuildFeed.sln | 76 ++- .../admin/Controllers/usersController.cs | 12 +- BuildFeed/BuildFeed.csproj | 12 +- BuildFeed/Controllers/frontController.cs | 2 +- BuildFeed/Web.config | 5 +- .../BuildFeedApp-Westminster.jsproj | 97 ++++ .../images/splashscreen.scale-125.png | Bin 0 -> 24485 bytes .../images/splashscreen.scale-150.png | Bin 0 -> 26058 bytes .../images/splashscreen.scale-200.png | Bin 0 -> 30493 bytes .../images/splashscreen.scale-400.png | Bin 0 -> 49260 bytes .../images/tiles/square/150px.scale-100.png | Bin 0 -> 18803 bytes .../images/tiles/square/150px.scale-125.png | Bin 0 -> 19692 bytes .../images/tiles/square/150px.scale-150.png | Bin 0 -> 20342 bytes .../images/tiles/square/150px.scale-200.png | Bin 0 -> 22240 bytes .../images/tiles/square/150px.scale-400.png | Bin 0 -> 31243 bytes .../images/tiles/square/71px.scale-100.png | Bin 0 -> 18532 bytes .../images/tiles/square/71px.scale-125.png | Bin 0 -> 18466 bytes .../images/tiles/square/71px.scale-150.png | Bin 0 -> 18775 bytes .../images/tiles/square/71px.scale-200.png | Bin 0 -> 19994 bytes .../images/tiles/square/71px.scale-400.png | Bin 0 -> 23051 bytes .../images/tiles/wide/620px.scale-100.png | Bin 0 -> 22114 bytes .../images/tiles/wide/620px.scale-125.png | Bin 0 -> 24485 bytes .../images/tiles/wide/620px.scale-150.png | Bin 0 -> 26058 bytes .../images/tiles/wide/620px.scale-200.png | Bin 0 -> 30493 bytes .../images/tiles/wide/620px.scale-400.png | Bin 0 -> 49260 bytes BuildFeedApp-Westminster/package.appxmanifest | 31 ++ MongoAuth/DatabaseConfig.cs | 26 + MongoAuth/MongoAuth.csproj | 73 +++ MongoAuth/MongoMembershipProvider.cs | 457 ++++++++++++++++++ MongoAuth/MongoRoleProvider.cs | 247 ++++++++++ MongoAuth/Properties/AssemblyInfo.cs | 36 ++ MongoAuth/packages.config | 6 + 33 files changed, 1065 insertions(+), 17 deletions(-) create mode 100644 BuildFeedApp-Westminster/BuildFeedApp-Westminster.jsproj create mode 100644 BuildFeedApp-Westminster/images/splashscreen.scale-125.png create mode 100644 BuildFeedApp-Westminster/images/splashscreen.scale-150.png create mode 100644 BuildFeedApp-Westminster/images/splashscreen.scale-200.png create mode 100644 BuildFeedApp-Westminster/images/splashscreen.scale-400.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/150px.scale-100.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/150px.scale-125.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/150px.scale-150.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/150px.scale-200.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/150px.scale-400.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/71px.scale-100.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/71px.scale-125.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/71px.scale-150.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/71px.scale-200.png create mode 100644 BuildFeedApp-Westminster/images/tiles/square/71px.scale-400.png create mode 100644 BuildFeedApp-Westminster/images/tiles/wide/620px.scale-100.png create mode 100644 BuildFeedApp-Westminster/images/tiles/wide/620px.scale-125.png create mode 100644 BuildFeedApp-Westminster/images/tiles/wide/620px.scale-150.png create mode 100644 BuildFeedApp-Westminster/images/tiles/wide/620px.scale-200.png create mode 100644 BuildFeedApp-Westminster/images/tiles/wide/620px.scale-400.png create mode 100644 BuildFeedApp-Westminster/package.appxmanifest create mode 100644 MongoAuth/DatabaseConfig.cs create mode 100644 MongoAuth/MongoAuth.csproj create mode 100644 MongoAuth/MongoMembershipProvider.cs create mode 100644 MongoAuth/MongoRoleProvider.cs create mode 100644 MongoAuth/Properties/AssemblyInfo.cs create mode 100644 MongoAuth/packages.config diff --git a/.vs/config/applicationhost.config b/.vs/config/applicationhost.config index cab06bd..9c66883 100644 --- a/.vs/config/applicationhost.config +++ b/.vs/config/applicationhost.config @@ -171,7 +171,7 @@ - + diff --git a/BuildFeed.sln b/BuildFeed.sln index 6c40a66..4a594ff 100644 --- a/BuildFeed.sln +++ b/BuildFeed.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.22609.0 +VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed", "BuildFeed\BuildFeed.csproj", "{CDDCF754-ECAA-4A66-ADAA-62957A57A51B}" EndProject @@ -12,20 +12,94 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{5AA81F EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RedisAuth", "RedisAuth\RedisAuth.csproj", "{C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoAuth", "MongoAuth\MongoAuth.csproj", "{7C67BFB9-1B3B-4676-A58D-10573DA82CFE}" +EndProject +Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "BuildFeedApp-Westminster", "BuildFeedApp-Westminster\BuildFeedApp-Westminster.jsproj", "{5CAADB66-1FC2-4492-B766-36354687120D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|ARM.Build.0 = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|x64.ActiveCfg = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|x64.Build.0 = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|x86.ActiveCfg = Debug|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Debug|x86.Build.0 = Debug|Any CPU {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|Any CPU.ActiveCfg = Release|Any CPU {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|Any CPU.Build.0 = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|ARM.ActiveCfg = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|ARM.Build.0 = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|x64.ActiveCfg = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|x64.Build.0 = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|x86.ActiveCfg = Release|Any CPU + {CDDCF754-ECAA-4A66-ADAA-62957A57A51B}.Release|x86.Build.0 = Release|Any CPU {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|ARM.Build.0 = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|x64.Build.0 = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Debug|x86.Build.0 = Debug|Any CPU {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|Any CPU.Build.0 = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|ARM.ActiveCfg = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|ARM.Build.0 = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|x64.ActiveCfg = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|x64.Build.0 = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|x86.ActiveCfg = Release|Any CPU + {C6A16CF0-41DA-4B90-918A-CB84A8C3F1E2}.Release|x86.Build.0 = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|ARM.Build.0 = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|x64.ActiveCfg = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|x64.Build.0 = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|x86.ActiveCfg = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Debug|x86.Build.0 = Debug|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|Any CPU.Build.0 = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|ARM.ActiveCfg = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|ARM.Build.0 = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|x64.ActiveCfg = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|x64.Build.0 = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|x86.ActiveCfg = Release|Any CPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}.Release|x86.Build.0 = Release|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|ARM.ActiveCfg = Debug|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|ARM.Build.0 = Debug|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|ARM.Deploy.0 = Debug|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x64.ActiveCfg = Debug|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x64.Build.0 = Debug|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x64.Deploy.0 = Debug|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x86.ActiveCfg = Debug|x86 + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x86.Build.0 = Debug|x86 + {5CAADB66-1FC2-4492-B766-36354687120D}.Debug|x86.Deploy.0 = Debug|x86 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|Any CPU.Build.0 = Release|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|ARM.ActiveCfg = Release|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|ARM.Build.0 = Release|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|ARM.Deploy.0 = Release|ARM + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x64.ActiveCfg = Release|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x64.Build.0 = Release|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x64.Deploy.0 = Release|x64 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.ActiveCfg = Release|x86 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Build.0 = Release|x86 + {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Deploy.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/BuildFeed/Areas/admin/Controllers/usersController.cs b/BuildFeed/Areas/admin/Controllers/usersController.cs index 0df83a7..66a94aa 100644 --- a/BuildFeed/Areas/admin/Controllers/usersController.cs +++ b/BuildFeed/Areas/admin/Controllers/usersController.cs @@ -1,8 +1,8 @@ -using System; +using MongoAuth; +using System; using System.Linq; using System.Web.Mvc; using System.Web.Security; -using RedisAuth; namespace BuildFeed.Areas.admin.Controllers { @@ -41,28 +41,28 @@ public ActionResult demote(string id) public ActionResult approve(Guid id) { - RedisMembershipProvider provider = (Membership.Provider as RedisMembershipProvider); + MongoMembershipProvider provider = (Membership.Provider as MongoMembershipProvider); provider?.ChangeApproval(id, true); return RedirectToAction("Index"); } public ActionResult unapprove(Guid id) { - RedisMembershipProvider provider = (Membership.Provider as RedisMembershipProvider); + MongoMembershipProvider provider = (Membership.Provider as MongoMembershipProvider); provider?.ChangeApproval(id, false); return RedirectToAction("Index"); } public ActionResult @lock(Guid id) { - RedisMembershipProvider provider = (Membership.Provider as RedisMembershipProvider); + MongoMembershipProvider provider = (Membership.Provider as MongoMembershipProvider); provider?.ChangeLockStatus(id, true); return RedirectToAction("Index"); } public ActionResult unlock(Guid id) { - RedisMembershipProvider provider = (Membership.Provider as RedisMembershipProvider); + MongoMembershipProvider provider = (Membership.Provider as MongoMembershipProvider); provider?.ChangeLockStatus(id, false); return RedirectToAction("Index"); } diff --git a/BuildFeed/BuildFeed.csproj b/BuildFeed/BuildFeed.csproj index 9bbef10..3e1e269 100644 --- a/BuildFeed/BuildFeed.csproj +++ b/BuildFeed/BuildFeed.csproj @@ -393,12 +393,6 @@ - - - {c6a16cf0-41da-4b90-918a-cb84a8c3f1e2} - RedisAuth - - PublicResXFileCodeGenerator @@ -431,6 +425,12 @@ Support.Designer.cs + + + {7c67bfb9-1b3b-4676-a58d-10573da82cfe} + MongoAuth + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/BuildFeed/Controllers/frontController.cs b/BuildFeed/Controllers/frontController.cs index e087cae..c11ed9c 100644 --- a/BuildFeed/Controllers/frontController.cs +++ b/BuildFeed/Controllers/frontController.cs @@ -115,7 +115,7 @@ public ActionResult twitterCard(long id) gr.SmoothingMode = SmoothingMode.HighQuality; gr.PixelOffsetMode = PixelOffsetMode.HighQuality; - gr.FillRectangle(new SolidBrush(Color.FromArgb(0x30, 0x30, 0x30)), 0, 0, 560, 300); + gr.FillRectangle(new SolidBrush(Color.FromArgb(0x27, 0x2b, 0x30)), 0, 0, 560, 300); gp.AddString("BUILDFEED", new FontFamily("Segoe UI"), (int) FontStyle.Bold, 16, new Point(20, 20), StringFormat.GenericTypographic); gp.AddString($"Windows NT {b.MajorVersion}.{b.MinorVersion} build", new FontFamily("Segoe UI"), 0, 24, new Point(20, 40), StringFormat.GenericTypographic); gp.AddString(b.Number.ToString(), new FontFamily("Segoe UI Light"), 0, 180, new Point(12, 20), StringFormat.GenericTypographic); diff --git a/BuildFeed/Web.config b/BuildFeed/Web.config index e066f80..5343bb4 100644 --- a/BuildFeed/Web.config +++ b/BuildFeed/Web.config @@ -13,6 +13,7 @@ + @@ -28,13 +29,13 @@ - + - + diff --git a/BuildFeedApp-Westminster/BuildFeedApp-Westminster.jsproj b/BuildFeedApp-Westminster/BuildFeedApp-Westminster.jsproj new file mode 100644 index 0000000..eb7f0c9 --- /dev/null +++ b/BuildFeedApp-Westminster/BuildFeedApp-Westminster.jsproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + + + Debug + ARM + + + Debug + x64 + + + Debug + x86 + + + Release + AnyCPU + + + Release + ARM + true + + + Release + x64 + true + + + Release + x86 + true + + + + 5caadb66-1fc2-4492-b766-36354687120d + + + + 14.0 + + + + + true + UAP + 10.0.10240.0 + 10.0.10240.0 + $(VersionNumberMajor).$(VersionNumberMinor) + en-US + BuildFeedApp-Westminster_TemporaryKey.pfx + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BuildFeedApp-Westminster/images/splashscreen.scale-125.png b/BuildFeedApp-Westminster/images/splashscreen.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..d8bbe728b157aec2ef3a922da66a0bfbdfb6edf5 GIT binary patch literal 24485 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/splashscreen.scale-150.png b/BuildFeedApp-Westminster/images/splashscreen.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..f161a7a98a631ef144afc980f969287c3371fbc5 GIT binary patch literal 26058 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/splashscreen.scale-400.png b/BuildFeedApp-Westminster/images/splashscreen.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..db0acfefc5d9c02bd0444448e26f82bbd0fc9b23 GIT binary patch literal 49260 zcmeFZ2UwF=`#&B)unxqHih!fmTA8xLs#}Xeg$xkF-XsJFVT5U|1F6tz1=%iE0tpBN z2n4Vesmf5}1A#CU6w1RYVpt*YJ3&R;x9|JsJFfq_;JQj5^PF>^`+V+wpF^TgnIDy1 zzGXQAfsj3Z?2rWlu`C~fSd#yR4ESVQ@yzewf6IK2S(6cn73;+RNg$F^HX#rPbv@Bm z0amCJNM{mJ&C!MAb#yf_~t9ESjbTQt6(?MyV zd=I*McpjtryINAs(auzFX9JfVrY6gcf{}m#(KWzvTQHH}Lq-N0@0g>D1kd7+)pu;0 z8xr7cykoz3!EIKkQ`-)b{9U){sOhRYYiMe3(=$-h)X~*5&{NsA5BytQLtlNLhN^}E zQb!A^v2WXlpB*O4!IP1{iyPA7(2)3=GsY z_NnjNrwT@>l0$p~9D`MT$UEN?`AFxGE7{rK(>K7AEBG9fBkO>xH!)*>Pzt_%2W3 zN_6!JAcJ|D|F|%a2?{ko^&j~q68~`~IpA<0fZzk9|2UJ34)JwWw{RtsDE`i_hXVm8 zJO63-_oGfn*F{j@oqdM|1t02=b3zpG;a z$sbK35lr5z>#2`2+;;HboO*8i8t3WbLJA`9F;f5gluwHDiJI#n#{gFopx8R98v3dl zT4+s8q_!4PQ)91&CQ?J=Ga~Ot{*49-7?F!(faAYV0k&a)+_&#@Dt{UKcRC~&Pq&Z- zQTa6TGaB>Ciabanko-|37grN4BlUm!_#bDXU4sKoIEJ|TlRv{8AU|i&2OQo1`sv3P z1kX9c^mX(nyNcD$c*jS*o44e7Llw{Y#LnDW=8i;HlLHh_g3A$CSC`MZ{q*`1xAT<# zPDaf8e;_mW`tM|n)Wsf!;Q7~mz5n#D+x?uae?;jsb`Fu8DPq&#@8j%B28#M$1k>cb zZ+0O$d%7S$VWp+3*H>u{^`R{h>DE~g+dx@2aD1;Nt4y=%_hoVSkkd7 zeR`UzZqC|zs!ke?+Nv7bdi$I-baXXzwe>%W`7FpLlfkaP)C^bum%@xU-KR{GFr!H%m^}NmJKROG{T(&(Q_^($m%z zyFyo0M>le<1T| zwU2W64DQczN+WS)js#gM$e89_nh8k5|K+pKsLj2z5*K#_%3L<72a;+H4RuZN?+;Ty zfBpBV*8h3x=db@h_0vp@k7t0%z7MPY?c>j8iQ5P7t6)peGIKT2)zQ%c_0iuy{`-tm zp24mJt3#fkej|(X<$c=vU}tl){{HG8r&@oSstLgPeClVfK1_XYI-fPT=7jV9Q_wyG zojdjU*4<}vo6phz_a8p(>3^U0JjKOD=Al@~!y;S@L1})>B3$!OEaYJku7#j9KV}iG zc_ zV;13>hhiZQi*PLjrTH<7aLq%pkcUOM7J}0Jm_@kep;*YnB3uhWX@1NiT=P&YHXt2-iYTnjfb5w3YC7V@wN*FsR5AF~M8JQNFg_>XWc|MX=Tu0G%!FoM8WU3}*i z2fj)JvCa9I1qy+n?m{4<&LI$!v*7=I2n0m~fq)$l2;>a}LY{QhzUBx55te`a(0+7q z>p*+Z#9i0$v01(ECBONe<9K(|UMKktSK!L(Kn=qx&D>DSm)6TM| zomDhh+0QO<_TIMo_TbvnYfeiXj)-i#6E*Pby@4Set?_=!RA+%uoP%M}CocNLMW49n6Bm8rVo|-AA;0&8i>bjJ4vVRQ z7=}eKN!jIC{RjZ6WimSz$+8D($ zBkoNUo37hCr?B8xZswr5$)wAk{5-;=n86=1-?om^W^*cS!pn2s1)i`R8N3KJ(`Ppt zS7Qro1UofX1~~~vGo8lOH!{!fR(KTz zw6R}(^8^b<*w31IH`dtpj(ddu;2pFo!a@X>%*^znB0DH2vci5EEv+#X9v7U0BjrtJ zrba|Ht=8vl4?k>L>uXL>m zN|nbqC5n~7e$)FcZw;D3w;)Gii<2UP;N5%1D6qXQa#jef$)awx3nz|j3HgmAn~gwJ z$B*zMkFfe%CP<=teU0T{%UMYOk>;w1u<|}B6#$LfMu$Cn@(YF*2F+?NQ1N}M9CT|Ta#@Va^W zZlAey)lB|l$E>OT^h>J|2#rF-oya>;2Ex>u?h+9Ruxtn&rN!we-U?0m9dYAlMS8e= zoT&lS7@3818JVyW^ktqrC4oRZ@l1f>m|Bt$%S{grXG{%r)$TkDzW)4%brkXNSy|nI z9Wk{S8ecVH=tj+oSFfOp^f>jIj+mVYGP$p&TP>z))>EJi3F(pcD}VAa2H&Jkf7KkM zUMk9o7+M-L+;55v4;bk#xGjl50HB+0R?8&&l+<)Th9qLr4a@pA-c_c}^k>O9Byfog53(Vrr%2O~>D4 z$^}%G_toF(u30j-+4@`6GBzC<^iWkLOedqmQt>(3OL+SdKrWSLsG?+=*I~iA-M8-4 z?wF;3six~2<1XrjpL%l+@FXHreh3D#)mo9C)39BV2ajdX6it<9I-8kdI7RHE6uS|G z#?IcHA-nL>zKv~h*=pN1A`n&~hPV=%-P3@e?+?;yv7s>lbRb0cBWGn<9B=eE-L5?V z$xo)&q7&B1BDDNl;1=j-D2Ddr5@5LLVFbjbkSZWdDPlPV?AylxaCx?zzALv#*x|gPGlO3PR;ueHr;{WVR1(5z zOL4Q$z_L&1$(UZSthY}&tOgLhOu(&P1`NA>d|Hp$aY_**LQ!| zPWwgSE);1X-9{UcI~f(6kZF0`zAfO)9t0xauEE|od+LPX8Eg)XIRU+^Q_(oNoRGgI zkUrEIu%lj&?v5^5y8_`&5W*6W9_`|ml@bUCBA$s19^uSBpy3Yz4Z30NUUUHr1>6oIV&s96V!uuTO1BV`K6GaO#&R-IOM&kQ--%Ze&zqIC<=X zV+boPLv$R|#9~l&6%d`bp-#B(XfmWl8;t?d&?u~?S~#2&kUQW&s0wHAE9 z&hd{;msF^0)S)Nnram6K4F?^TtiD{15uAm8y$#;Cl!ge-!%T9F(wyk`qRz_p^zVSA z=u8Zg!BAg|!18oxvxF%ZU}YL|y}2{@rfiF=08l`~bH9?-bts3Gph)d@r*};|BpeRo zGpY8)p*%IE>aGH0X(O?6|){NV2Goc*cqP!k7APN0Ldd`z-NYs zk4RG0en#XUka}r~HM|5sc5|a7gw8NqjjfG`l}o7>eggk{Z)nX)MdiZP(}!x&xZ8?oQz2+<^FgDUW(z$~BaKP$_- z>Vpn1qEd?E^buD3P7;yE0E-(XHke^%;0EbAY9s4;QF*VFAbI+3?RKUDBL02@q*Vj> zK{w}^*y63;gZI$FL5h{R8+Q@AG+HuhmtPh<1<*jy!s&9aWw+0*cMxD!B*Kme% zVhqLHOsLA`DyaZ80fhVuk_!1MYBrnS`q*&)o@zTc5u&oQP?!E+JT6FdY)c_W#%YhMaRCZ{uY-L%ey=) z8b$ZohS>+6t?8bQQC7Dd^rO`dL1QeJ7&fZdl2QRciR!#(Bj|ytZtr=ri32><4V`Xh zOz%+OY5*`AZB2+^(d2Hl2fE|b9 z?(tPQtJX@>>r@Y&bq$(t+`JA2CbHv2d?%iG67L=h}oLyS+p47RB+ zwGeFU%XjR#jDoLo!YQSttVge>X zJO}8kY9m+-<3E|nJ)dS_e0nQF;awi=8B;4uKZ+~a_+&Ht2zO8VZeWQHs`w0~)6?0| zTCd(3=L9$mpn}GivV$o(QL3mxs`iYMO~Ttv&*k0^X;(W;d{@9qsQ}1fM}wM0|=D5%SO$L zbYt2R?eL$5AIA)1n57f$KT^8k`_PKRuf`>P70>l6)~UE{1d=uYlBTf(DISz6n9_yN zKWLvb^devf-;BQZ((3>Qh=T}3cj_sS)dlzFL_`ST?;yd(xPEliUdHw`JImO(q|aag8x#Y2lwV4+bPMmg}Xd>mOj)!$bLSHl)vEi@lH z(Q)q5y+CucViKhrfa7LmWRZHRf`))VSy@CBW{eK+jH%s87tunoK~K^Xh^mc@nG7Tr_!b8suj-aN z)epa!Xz3d1bbs65z(@O(qd^jS8?r-{EGhT*aYQcd^+2Nj*aAKHO~NOKNf4;*Rys2|?J6rf_>kfx2TblzUo6Bi9OrurB z)4|Sw$iaRcol@n~qQS1_nF9pxzFSbJ|LxV)nG;UjpWDfisJ4Q>jXgl!%_HnM47MXB z4;Db`HTP^iynNql}d_oBx~m}R7Odxom$joLb8v$<>w%bYZoTWeJb+?w&^@g4kNc(x;l~SD2M=l8j(L1n>}O?A}ED&^;ko^ls|pvd*ymbIPGwb zE41T!5*z70?JxeUBv>wkuS4#Ki~Q}{0&J`ixrg)1mm{iEww`XMv(IpI z>IjutVrv(xJ1-0*8J?APoV#oiMc|bV`$6}ipqj$9LuC^WANC;;3PHhK)nbquPfj>d zt^vh4=0}KEz?Q84sGK1n-x>`oqf#loUU4uM>ZYH(NbLR zb0@td8er$v$AcSb$=J>{wbu9SDP&Ec)QL59lJ2RJ3WSh!njKoSpW8U_MO+AGIc27|(3w~BXu}mBsfp`_$31)f*4x8jXU*wo^af&n-pQv>lQ@Eb*s;a`LOBNEbdxZ|{uWFQ%(s>N=rlHK+!ht=OwLaQEcj54LA0VFqp5 z8Ptqp7kJE^L&4Uk5op2n&5X&VEJXxD7dC`upwPp97g)@py`RtY4-t0NbS;OR>7*E! zWOlG18kV_@_#;0tZ+v1s4}o}Dw-wi(Nu__?@O0LbYWc;7Mb~|uf8QTjL_JcB69^&U z;d}K1XTpPjHmpvm&#MmnK^5SH@^|8@y4&r%d5b>gjZ>Iz4vH z6Wx)a8a-VES?SLR-8+Ja_IN2o^;d>D!1qy46JG3}*A0MgZfqlNoP@kS=m`ZKz6Xh% zDe9UCtugNAJb?yZ7J+bobR06Kl|(z8^RdJq05N+G-9$@}(2w4M)oI3bQ>Mwzt9iip z8A#PVOEGs4em^LKh$@N;S)`h zT=FE)H2eTC$c>haVg-XffsMVmS@J#ym%l5H`& z;-lcM00u*X4+DA2Lvl3*hmDMO7fAFE?$fgFEupFNeE=R#=8PdrQNq^|-H0_G%uyk$ zT4r?Q3G4|CW7Rj*ZXC&nqn!{_7q5FNJvWj1i)#9&*3e(A+AX@C~T{Z8Xuvk;O3|d6NaaO-{LhSl|OS*Z8rF3aI&; zqIAf2Hs_9zA$fuhNQQLcekX>|8m!w7eT4i1$Y)5oj8mfPUpK_dW93#$<$o1OQYu*; z9-RktA`j-l&z!Q`u7Y}M&NqH7t$P!`3+F&4PG&#^)Nf}1sQWR`nz z!V`dic%Hs7D47m|YQDcTA;zh2+Pk=FQ`81ZG~DA|`LLVbI|rLvB`<(>zio09n8%zO zkOC?FmC56js!aax;rOlYEk|j4qb02Nk26{JqdJv0k*(tObOm=|d9B8mR5jqR=QQ>m zn5Q+G20w;I5BtT3XS45u#r!+qvtTi0+{qFM1fBZuJ5%L}?k}}JOmYw}hVnZg=!NQO z!Bc$5_7~1nsuiG<-S3}k{GK}`lcFB4Jrf>}vNUF7g@usc*jpQTl@ zC;AW4l~t5FN#Ae^1d8?|PeB6=L5v*+mU_8%n0B-E)oVkKQ-*ZxI+;n2o2!bz#x=y@ zDtSMq`APEr55C0n>-+*$(cM;8tr-qkRSAbTnsJb->RAfmXpMTsx2sAfM#v#|sNNwq zltg#~B+;dBIZj}U;B|*3RBj1LuLYFUX%v^33hcSS#5z2eJ#?ZuQYQhZ%$&O*;%Rcx5}Q1R;d3#{%`JOr zxK`k0tiB^hXnEN4wASa2O~(y|(U2GZ}H zL}So&`ymcpTkqSRkR8YpeGuCr&?Nj3PXjAvo7fwd_l+f{bX|v3-KQk0_LzJr>9C^p z7I0D!Y!K6&LmBUX+v>fUap<6Rk4V!tlsB*q zs9wx)%ym+}y7&re0Qb?&NYgv7x+0Swd)o(q0>1k3WOE{eKW{|egG>o8#4(wxm}wSx z^Do28*%ktm(q zT&J(Kn5(H)Cq|+|*5;31!|)PDC>F zdQ)gWTWZD~{8k-{cN*cjkCf(@MvR8O!PC3NRrlWEJCJe%p+1xs_`x%S&P{il$H>GJ zc$n6U-QB2hF$--^Vng3tTcOu(Cc1DtD&tSpH7cp@m^ixmT4^A_^9Gfh15Wcn=TNMf zC)y6Ie^~A$7|6VHRQWW~^ufxGrvcw6W|i(29MeRkJoJOkLU%0fq!3Y*w>co=>tZSL zR(5(#ZL6qli4>Q|QerA*Kn3D!hjoFG;ElsB^qZElE1$g7PQ&0)D-oD*w~^2;(`aDj zO%3vHrEZ@v0T_n`GSe&-?L?lV$e#!AKopvC`O1iH`$LGjHYUv-+niUq9k6O;W}01T zSg4auM^=4QUywj04q`aD$Xukuk^Y%r?lMDD|7D=g8>x3fxWV~ev#=%<-39P39-G|E zXo&`?m)OmG3szk|M(a2eewQsc(KMZxxt3o-jKl?4z%#NuDutmwJ+N)dRqb z@_kp=)c-N-5W^IN%UhMBRCU2yNTqZq4i9gj3(M=y?($28uR`fM8we-Y1CV?-DjF6F zh6o^`5|``}(z-WdvarfIW4479MT>SqPpI%JyjIQ6VOfRq$eB?%v+La;&6qZL2&6ZJ z+s@*05Y$x>fvY9z9?pQkeva16c*Zt4)m}a&+&nzkPfITS?d*NEqF~$Ml8Bkz&~Exk z?G16WccyNY0;Xke07u8?`@ffM^)iBno*`!T6ekneyCtt51Bu)!n0kz%uD3GrFVuj~ zuEoyUD&oT#)Cf>X#frNH8)K7SRe-Q0mQx)#S*YW-(@$cAjAu!9cE+TKp;K?+HZ`Jy zGy#Xtpn3>~GP%5&kdf9RdN8n_CiB$*cF=vB1ipH*wPY%clCE=x`+%<35MbKajCPW; z(&=T);%kDNVcRakwD-x#BQCR8xV0o!#I|f0?GI^|VMPIL5$$V~py{!t0#mh`)sr-N zv~r%By4V|fl0&urkY@qL#5q0q>#v5kdRik^-u9JF3cB6pLTE{+(=4LrZD>a??V?_4 z0}w)PTIxsLo6E0T;3v=B4c==C zK#9PP(M=_g2RGO~u%XE}5IVYmw9{ zau(1)X%r~-iWx!oLHnTgv%Twf@@a<5Kgg!{*xb6YekKi%XH}mtt^|hyDYwNl0$+g{ zn?8973HQciS~=qna-@x5Dsiy65Pz@w$96iEOi?=x1oE8C`>SJM<>3$I$9Fu1<9Rcs zQ>{Oa!IjXixjC$R)19F}zReg=idw=u%6tM_4 zajiet7m_Uth)l0>*dL|ZvjQv6WLV)3{bJVl64r$baRVWdL_ea5_gBJqM} z73|9F3zOrp7u1U#2vI&I8b2}iM-${qBbC~oO$;S)qkmy;1o_CylIFT5Asvn+f&^9U zlun83imn()fxa83=K+!eA4rSNyyTuNZ1fu55ZW+nsi=L&cq&rOGKyw*8jk}Nw?bHXDn+FScBPr2$MZlp zCF4@VQ*%_tn5%Kkkc-U{&|GK3E1Sb^5I^`kah~l+Vh-8iIaD`F%CQF4ZoLgsxEej0 ze4Ptv=J}gt-h`{dhV*t{%9M+?@V8-+J>1U@7AKVPl2C z68C{Z$Qgv(ipKB)5z%WotX?M)1&X{Hng+o;BlkN52V3vm5;Cf@8z( z?;Qhg+}{#cQjf_0g#mN`oHEDGa|kkb-A8gs=G{{Q)fOdNJXR(74F~FgqW8WH8*UHS z(TU_&Qk}SaLaM{U7*pLf&9k$4Ln>E0OC3Nv>(1f(btyqI-e?D@s5j&h*h0%@^c4!6 zV5VTef!%5;Mv$2C^Aym!bg%b=V!%}nOr)JC)~exZJ6%q@{Wft!#hs~Blsh_|2}d)k zWypdn;1Wb9TAeYr;W$Rlx}rmPa3APgvB%P1B~`ic&(?z@s2?}^a-_s6oT~tYRzE)N z#e_$o$e3=Gs^3k?=hKGIYVod(qJx4wf6WD1u$$l)7}w=d3;UT(RKzClA1g1N=3S0Z zkwjP_^+1F8uXU{PZpQQq@hrgXnF8i$^qo*0 zMcGP1XJ~FYx$NDAmIxW|=^Ua=R0cT))Dc=Ay^#KSP_J#S#meO}Y&nOwCJzvyUD(%U zCJZFCe%!ee9=DDEHY??!?zn_&7JT1qEXDlB{vmURYoexiTKts=GuOsU!>x7oS>obU zykptD_R~M^g)m^~ajEH}%43h73hB-^{pi?m2s8DDFhU=a2ke-<@nbIsxaG-X-`rzdpeX3CZ?Qkoi*z9Ss14-o0)j#=I2 zSOv-dxl6BZ>vBRZ&kbR)K_ zKJ0BoRv?;E0^_u7g@Mpnv$wWAzLNZ!urgV#i<10j;{85Mb!QL7wNl@wvM-B3Ime%} z1;;Yr^x~Y4RXa&Kt+$!3$DFh?s(88w(EG9W|@#>M0wg`aQ^B zciOfkw5%@280JlGiF{`C-AzRP@|n_*j?2C0Sm0L5$F}LFULy2{78KK^&7ybQlWZJ4 z3Yj&BsVjB)FVTJ33*B*_nhGe~6|7`>V}Fw&R{m`UtG@o#>vH8e@Wzw+*rp!fh-U7b zj|+Or1rb*5H0p(~&4H5N+WV)`tXKW`t0A?+4m(#dDv=K;odL_z9@s9|Hm9i46<8W zW8#JW%2#WRE)F+-*>4<{NF*nu-QO}>t1DG)5&XxAW)TPGi#swOH)^FsVlpt{mg}qh z{#v{kq)yKxRebc2qNkcPixVDAB$M?8L!m&N7x)}D_eArI$;aLq z;fDAQmpVu+lvf|dG-nT$ziu1}g*tOblx*qjOJ-|$QR|YwBaq4U_h)Czevx6mG$SPQ z$uizX&jDY)atu~_U+Zkm*oTx#0bBrh(kpHWx|CDVCAge_D4JoCk@p6SV4F`hy_1tAgV25TX|O>lHIML)s$b5%JH`>V;pPYrK2xqr=$l zy2MJ6MEB7dU73a*Ec&f+mZJjcd8zgZ)h(z*DXj_I7K=t*cCFaUX1K4QF<5q{!SMr~{7^|kex;plyYsbrw^e4TmyVSL z!V=~Ao)Ro6nOPADT}wEYM|$(FH86SYT5Tx>#6YexQ>o&Wj()+^(ThM`HWh9vtR50` z6pE!($+nO8Hk1-O31!^+4i55Z&e8#=p9+t!O5Cqt!roq7c|hQ7UO*(DqCAl0HIgvO z&FzSMXK-`4tlmJkVwJkj)LYOUaj0{ulPup}Ez>`&PBZPS7R`+G81H@Jyz$KVIhwcr zU{s<0#kB*as3a6@&JN|b<@P;D$}qf#LfWfiAwBjZLP6z$ zh`v+Tw`$huAyJ4H#GY>wC8YXSTc@}`7#sg_bJ448S=xANsuSPM^4GJ&5CoX=u@*7* zz3YJU9)E<(eF=}J-D~%!Ut}+=s?d~<%l0ws9#hpRj)+s)xjc+HO5)8#5WhP21U0e_ zx}NIBe_J^*rf`or+ypkcQ?0#drJUf_Oh5o&_0PlxB?PiU9)&-S|JcpgejOX7*XpFWr{7*|9rNBQ~M4vC6L@aY&d0 zp>%Vr)SJTG9feac&*rwFv__e4vfkeAJz5?QqM?hr**!tbhF1Z6i}ALfL`Hdg{#=G2 zq)Ul=si!W}(w^x?mAbR0om%+)-xT>HB z@HNQU?M&QGe#)Dhm4heU+F0)DMLj_QeG*u;^0UI}>xo6q*W%Z3d?~mretem2@@U4z zaqRAXe*_O3Y1@8yGY!e1UY*~ZqJ(Z!`_5!HtI!end~eqHpQV-iDNy)CD2{1|!xvFc z2{L;UUqn2*!1>cQ$8&S80o9)JLee|pd}hWW2}Z?PVc4%HT1SRt=|WM8k4;ZdawVm7 zSw}X&(ne%1aB!VaZ)BR}fy`-64MUGcU7-XC;iutYLmdsR;35>>-GIbsUVn-@vC^BI zjtSMP+3DWK+PTqcSc+a=wnPFtNqA|}xT|`s2`o`evq8QY2AZDU`M|(8KSNcz=i7Q-yFq&t{8eo4 zOp&yRd@fx}-fFbJ94tf8^-Zrbx)xYbj`V!sHTy+YTSPgD@>FJUI61%oL5SgF8=v$( z=^RX_$$bs_Dsy()LB4lysFI!D82LhJx?vY>yh!+FEy+&N+Su1k&~n%Mo)VH9sA$89 zJS(VVn5`yMtk7=EC@SG5&@A1b$6L}%h*lzI`@3CB#_FZ%O9@YBB77+gk_elA7OJpb zIeUF)_s`#bG#3)kiy)z))MIsw{M7c@**NSlVc0Dvm>`&fX<9kYVrW$zKXtzfgs!`{ zf|I`dj)Zy@LVll5!P(*6rpAS1gsuULxF<{Hgs>ca)aU6;<^BYz>Ud#I+ZV0ZBfVy^ zpmat2X#Jx#&qI=sTi!U(JKBg9g@fw}``kmegQGee<>zqTkZiJB8++Ev@Qw&eX}hp> zU6l?u&^W_Yt(R(;u$|`-)KMKi)0kM?dqsh_6h|BCe#iI5byTxC-<5#H*!F_ywl9!$ zF8$&>gq7-@9LzR zgfh^5wZr*8M-+$1Tqxlmb#F=|u@VdO711ITcj>x;4o*^KQNi&JbU40Qsyf0jl53$g zZh09$g%wm?2g!&SP>0zsz@Kx(54l03_2T+bGpWU~v*)(}$2 zMP+9Cm5~>S)S3%pHTCqR`iepQ{!lmYvi7(7B^;_i=l3W#!MLTkmbE!ud?8Ehnh1L( zbbESypp3Du@sot*1@+JxEdp0n@1;K5i6Yp{>Ys==Fl*Rg%Xa8)D@2BYz?8k2)n~6a zVKvmPU#E$KgTf&GoLOQv|{8c~3pNgm>c_AJ<4clhnT% z(iwYca8Vbv0(tbPc4NyclT*g7Qn6WOY6(-g6}f^u+e(K!Da`s*pD7;vM2pZYq&E^g z(zjZH8)iRPf+W{g^qb7k`0k`$LNp?ORf9d}Ce@r`_h#Z&MAcO0yjL;>`+B{Zp1u@Y zb%w*FqPTBQmHS(P7R|3(?di1*rA<}sMIC~x?e{#R%gZK9q?@K5LWgaCb#R_OO}Pc4 zW>8}(QN8n}^V=QZn%=>bw9fARz-I(>+TRpPIHb4TM&4u7Ee4vZFpZWUl_GCD=qyc# za0y=S6mF(#K`bqzaJY^Y=wTT=cn_@FjT=m+bFl*3dxg01B**efo_6ZsbK6GOmAbzQ zk`Fvh21mj^{51*@1UtItSFBNe6n#(W*bUi^NC{m8&rsfnT`=+(_I<<4v!u;td~}F5 zz#$rx`U}d-CsUP~Gi=ZeUkWaYKB)^%PeZ3_j0Fo>1Xgl+^F3j+K4D)|BLV+aCEqPja1;U6e=AB9PwNr zJHLdtY0wVBY%I0cv$-RmpP)Xysl0b3|6L}`I}c4>NF0%ghoj(}Wwgqisir#q*QHuz zfr8jf>j=G?7Mdw>O2eI78ywlY9ucJs$3uLYJSG7b%kigjEe5l`23^WI7u>Yg!TIhA zOl0BHa3Q^E_p*p#xJX*ry(HB!xgj^LFdvy-$j*JTMWsOkb?b(`498DdztAOw$r z;&keRsR^>Y<`vjk3sIWSFbZV`?k0EkAEg;$hw&UzDeLOMwWE5&)`_4*1i4Smjq}Bo ztE<0mw4InS4n?(w5ClI+k3VpwDb(fThwU8lm_7GoV*FX~BS`8xD2N#Q6;3kKGUzi; zCTUgnoL-~gTf$&EoDKJ|%g+oYI3pbF@%bRYj=-1Tr0?!Ec32vJ2acxa(kxbO%k`-J zAZu!isuD)SrnE+ky-!le00DA@;;_wLNd?Y(+gNNA_rz)(V^z+oyj5OFse@rq1}#SK ze6EtEG4WKSQ3ZSU`?wMt+^k8VF2|2Dof_`gD;ULhIILMkOS5S=-$R>13ubgY`?)x& zh{|pydUJNC=hSMKWol^SN_P2>NZr1E9~*Is+iR<5&pBC2rmWi4LfXxMLueKsk|Tng zgzk~ai;6R$jX8F$Y3)T76iODHQ1WtXh^L@Fb6fRL+Z{g%7D-oi&A4!damUbUV}hG{ zYpu?Co=?S1WM{5t*?ld1mqQ-DfO?vO$(T@&tU5vzS%GWN7ubWLwncl|-c4mjbs9DW zm^R==fr6!Zjs60|$%t8-$B60+NE-nc!sFsr?0FPFl?tDm_gUd8+aH@7-t6mnJ{kDO zu<@NfnQ3NGua-~6?I{S{pSLIMS6J2hptIcEnRLh`8yRw|w*5RU8OTxD$|@Bc^#AI* zs%c7RN-rs1f1{nyuFRY;kP`cqdFU|+{_#MKC@AL&2272Jt9dMD3YSl2dX$3&(3*&f-lb6#zekzLrYF75bj(b^lc*=ZZOt^| zcb$VczkG~KLhA#+qy`@066DpheF{;L-Inw!zq*aYVSD;sop#=AG?CFbm>hq7>zilL z!Hv`b(RZUZI|S);CibFAb_4j!wVI4oO%D&#F6!1-1nR!wWw_@#CRai0kA!6p@$+U` z)M;1CFMw)epk-4000A6`vVT~bq}IAK4kL-!_*xR$K!1WWwZqfhusbD z{*Wm0Peff=W1j27*XB2iN`m>yc?^7bNKA6dLeN4{Dvv=#FI@#LtcAUhi zKYwfuIAiHB(kqYdP1Ze+hzcn`LFt5>>Eu1NasmE=Ivt{L9epX>X&lIaSJ7)XL!q>0 z?6Aif|96G_cR_N5lQx;NFWK_ehc!Aa=Fn$rn|c`9<6Ue7^B^}jA!}VyeD?G)E}<$NZ(L~`?kdoCmFFW#+@;8iXnC)xpL+kyB<;4lwZ}H{ z=G9^OLgxL3sk@-8WA^k!IVYro>&b^7BZ5)gDq-!L>J}S)(<*by|&R=_BPB z?o_j|{Kqaun*8v$p`_>9J8J_cufqoCgs+v8H186+yZroW8VHLu%Fne@B!Y4PypR1n0pN zsIbIO7?iv}eY)>JT=8D4e7beAT?=pXIIHy*O7H4f&EbBv=Jn`MTgyM;AK+aO^Q#J0 z$xN|e6%!Ngv9we9{ugp64&Br-!9nm|H7t9j?|YN(nDImRvNSY;>TAEw9T zDkWqy*zDL8n@6m=JM#CG<-C{cB%QyK5rUIULR2?Rx^U~D-QR$yZ;q~^N?P?k<%f9HfbgIAflZFD=9w6#v%$_XS2jVx8mK5 zs(*U{7OZGVxI?cZPGL8yJW}pSz5v#ka1s>K)9301ji_CR5|bZ{y)u|}KV_3%c!gid zT{+d2PGhS4xk)$-a>Tvz*zUdMzku6M!kyXTBo{TGk(!vdHqfGN^4HQ*;?K!dTmNYs3W*R<;a}a0uh#cU$Cj`4n{HxLTs z(d(RP(fBH#VLzMFyq)x=xCHMru=lEtiW;H5eDe+KP!s#`u>AsK9EFmgB+jc z3t36Mq~=zyh%-L084)E4@B(p5=R2SopaEk9k|cQ?9fZ+9^>jUI4~;~)uWMIHl>paf zcB2Zb>K?7w7+irT14k|T)oc2ins;^54n zo1UFq4N{f8*f>Jc*xTPTca<}W6ZjKNFT?f2mD7XHa8a)nu%`ALkB6dnJZYuS=G;|4 z$7jL;v_G0{&379zI5)n5KlmeT!cNi=T!za)s2jL=jmCd{1l;fe$QF_VcR5^)E1~D9 zv4cFkN;Ov3mUSD0B8$GV4YF2t&$)cUjt{8GhO=ATHt_Z}~vjp&`TEp1oVuvZ+ z^JwkufxGIY2f9p5D)FTW-b+1lcJv&-oEdBNazwvmmzrtwy#oZCn8WI52yZj<{8oAE zu)XIQi}gK2=b;rKknxVDXEPEM_KTB|6?I7n1;f7d631luY&8>)$c93yW{UzT*WCU= zrSO>L+tA|?Y^2ALK?4r8_j@?>5x5Z)T3sg!enN}4!_O_XA3_f8; zbsL-<_!aiveA_)ydU}?5MxkQayu$z`4wo& zHN}oNy3VfK<4xW4r3}wbMSN-jkh6uBcjL$k`tUCN+o;6KwDt^v?ekE>t(NV?v&@m) z5_jB5G}x?qD(~HS?nUjqufTSJB6%N(x{@0BPM0{&3=B3M6I^Hw0e^n3p1aDruu|wI zcza$kt~n9dR9XI1TIVjg8;K`zCE1m?LAL^ecK&iUF_=stiKYE~cd|)uNE*l##m-i& zKc2JsC_cwukgeEyQHarNYb1j9%_&N^PJb0nZ6LV9oWj^#+$(~bH=;Wa0-iTdI#CKU zH`h)?M4~z0Zr(KD45@3Yl2#z{v+OKHE|j|;Xs3y3r)PJRp!gA16cN#97NVK*Zxiu% zsd&Ll9k@zPeIVEUQ9!1DyK zWqb}4^bMiw70oPYQED7|B@1H_QwYVEqm_;{UFF=t#a2%)aTwSbcm0Okgh|CV=z>#n z`{9!6D>-jR#0MX$hvEGvIySrG2?G9cJK&Km)xoy3B)j#itNC~rruGX5YZi6 z_DHGBi;bVIInu}-x1d|s8Lub@z=FmX+?0I>-hCD-Kfgfv;%>A$@n_2-h4^zcXMlvU z8^YNJ`bd_JzK^1eyC)*z2{GiB13b#TpiddFT7Ra-C+Vg95Cg;pH86#ALn{o7V_G+7 z)T^cryl#s$PdpSBkCO$DsHGOy9Zg3v~}m`R1C-=4T2YDZvf?~ z^+fKU>v|{(Yhg@-or#>mS>F)qFD6jd2i z^4bro-k0f(VyA$*C_b_J&(Y5t#ok%SqXwVxmY98_IZYUYjdTc{1Iev|tU_0Y$XdRi zvgkqo$#a(%hp6l^RX*-E@A_n?YdFoi_7hUl*N6>zqJ2-(Y5&s;Ll5er@SOD<*=szf zLLePY%Q_odl^r;EIUkz)>`90Dy99&-9nUdBz1w|~366%Cgi=TVdXeTqdjU9-d*K?- z3fJD{YYBw6<}0#ztPhtc_>EtXPI&X`_5JM;bPtAV-H>-6iQ{o;cfA+usTF&z_nGl3 zA{ZtsG9OpDQUMd6bdW&_(J0lq26Ra8a%RnqE*-_L4l;!DDP707DZ~thzt!@aiSzmO zs-{e&LlxD3|L6QKWBowxAhuEJn)xDguwif>lrT!|*K1y@pdYq_B4jeVEFTxWq8fV- zY;!=rl>uHl>1^!dUsTghY98Iupvo|LlhFl2XF|uyhFjd!HKV_O2Q#5@I_uM(y9c@I za_U8)@bqTIGfOA~BTqgRuo)F$;q5=p;bD;IDe#84gE($32zEJxQ1#0e&U1ps;v+&UegeQ&1GsC>Q3urttBL9;=@yaxtPgt z+Rss>Mt)Jhq94M9L#z>NnSFC-4^IdF<$%~9*fF-VF;MuH^FIsHpaX@pm`}AlsXLDNPUZ2H z0Y1ZKFWq*IPP?}PA67(-0}XbCVf;$o6_NCt;|wimuL2t3owre}V7vqU#!vX%4J>*1 z+3{55<9CYnOT8OSJo@@VtoD^DQt@BZd)<2aAv-s$eusm&MP4$IlMGI)*#-|*YSHel zoev;?x_!VYdf(}7sG%Dm-*(n23>XLfUjSR(4()S=p&RqK8m#mIew2B}DyWE;D-3y( z_40H52(FyTSl@}mZnZbPu0@L)3#>!NDl-)O`AK?M2%kN3>=`x(AXWdkd-}&sP%VQuj|pWh9DL&U z_5rypr#f)TP-whQBWcFftvylDsgRECkA6B>sBKR#5}TzaWBi+D%=QG=ZKwCRWSXV5 z*$EPVtYwsM!EA|BvwPgk)B z>-fnQI-L*Jr_JW_q1X(Kvfj zcM7lX2#<`FkL@5|laZ3e-bzQ?`U6j;MzeL1Sk@qm7RDj|kQu5vhWrX*dza}cuA~bS zsB%l#AJT<-d6#{JV!z)S#;>0-eink!$+8H4Ok$ayQlc=~jN-wBu0?a7-;->f*EJw> zg+X5Rcwai{+PtYeJI?V^+O&CuCrC0zXuTVD>}}<$mGF@honao;>KqR==}-HLO7e|S2(3h zyWs!q@+qt5ts91zyb02^g>=PK%l?%3#09~~y0^EfRZWscwTeld+I4}RN+tHgE8|E$ zPQ;HSoGBl^E}@0h5GBjCsgdua?oSI~4oTWA{E1#-6Rj2iY6B*k_W|I6VNL-qQuBs- zv4SQRC2->7T9S~`8;IBP%47kqF!?A_YAVn0H?MP+=AQ{U84`5)CNi(0ZhhWE%Vt>H zoLgDuEwGRDRf?O4V~utKg$cdq;=QO6QjL0$Iy?{-O!D^yhY}UBi8^f+JlTAskO3;o z^)PkPC&enjfdn9$+02u8Uy*)KzCn>8=qkBe04w?&F~{ywy_vKyIF!_k8p2k%I37)n z_CGvDrX#Wq%w_419qZRN17o1 zwz$dxwbw*4>seBjsv&9IXsn{Cc?g;`fv(YeYUs)ZaWjxafKa~q=<4)?xeJF04_lKg z>$0(Nap$aM7tv4eFRXZrl+F`8W^urH)G=A`i{DhJiYM14#{+JC+I7_yH*m~VG)ymH zFc(9!yWEdrJ4_O92$uW(Q9 zRY!)lfjE6Ng{|vO{ zgNsuC_jVvg9fp%>bPP87T>8>JdP#1zlefsVMC>Ax+0sri$>dV?KadUq1N;$O4&S5n zrxR551&4l%G@TaBR#=3s9FoA-v~smPgC1X9oWg__(|%+XPqnqRX7%LKoLwDtDit)@ z1ho}WQ&t~BLGRL!`^VM36{wKEzM$^>&mE)K|K9i;5F>wmY2RwN0p`LmC3-*@z_4l- z1~3@FunGkIhXD)*Fc`pKFoRVL7&ge&X)ti2ffEg!Xy8NxCmNh;gF^m;2@TR;V-=inLVtyHs{vVid!|nh8 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/square/150px.scale-100.png b/BuildFeedApp-Westminster/images/tiles/square/150px.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..afecf9a2f7bd1f6e3097190b0fb7eca1b8d14b5f GIT binary patch literal 18803 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/square/150px.scale-150.png b/BuildFeedApp-Westminster/images/tiles/square/150px.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..da5558ae6d02c8d9e94cf0c41e30c2b40ad13422 GIT binary patch literal 20342 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/square/150px.scale-200.png b/BuildFeedApp-Westminster/images/tiles/square/150px.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8579250972d156190d870b39ee1e0b99fe2e04 GIT binary patch literal 22240 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 L+2PxVP^bP6GjeF* literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/square/71px.scale-100.png b/BuildFeedApp-Westminster/images/tiles/square/71px.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..550ae941782cc9066cad188c062d71f7aa25afcf GIT binary patch literal 18532 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/square/71px.scale-150.png b/BuildFeedApp-Westminster/images/tiles/square/71px.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..74b6cb1197430738cc7e2d4a7f4b24de512ae480 GIT binary patch literal 18775 zcmeI42~-nT7l4O=pa@723pG|#s;vq`CM!t{aUmd7K|nx|iVVpF0@=*M=Efpgs9Re= ztGJ*A5z0~(7eI-vT7O%`DlT6NL>}ruj%Z;@qFkoX@Dkmfy8ZG{*-%V%qI9ch z+a%F=eh{mM2ab0OFwj0;Yg+fPvQy~tO4uKGt$71jxI;H33 zB(Ov!zFI8d1q!`-nnQoNJH=?VDjt=ZkdWY-z;IQnqp375mrI4{R5~3*H9$?0LJKE? z3eB5FC%t}zh(@HAs`;o-L|8?oxkA*T zj8rj7tx^-Ce2!^f^>ZDFMSYE`bZS}m*u)|#B17beLaRaTXhSxP&WW#YpXreOmCJ{; z)M!29Q3O3mhqTlLC8-cO(rxN+r+nW2kv9 zJS0*295X|W(X4w-8K;_$LgRU;5m>8K2Pu^@fpNL|_s${3!=rn7QYJ5uD#XeJ%@jU$ zuu1>I>Gy^RVJ#v+7d8uoI3UCbqS1Iv29E|gLo^-)VVoE>2l?` zlY{j#KzFborC2ISdMPjcniwB_iivNr+m5VUCjT z4(M5M^uW^I3YoM!FjcTxgBX^byHoGF>x<;RKsDI(cc;58KUj_kX6d9du@{1fvAylD z?(c1%r@?LveSd+Q?&`sA_*BD=B9jgrm$7uqD~5u!mC>Ys!u zFz(G_rAR8~^|NBIS%{lB3I>@X5d_j`2ovNmqtM-1%;C~t8jJ2GV*R!8yr{o?v4|&8 zs^zd&AeF<>2vwzs=2QC%`-vKY$=8?XqtIw!bl^Th0b1ZHMaRI3;&2!cO#-qZ2?L}t zm|`$Wgt&n)M-0PmY>vo{!Rd~$f#%P+?(HY)dT2yqHjTl8+@e4RSIjmbVu2ilLj#d0 zIy;IEK_Vzh)Y}lo*)t8zQ%lk83d=A$hOvmzvA|4-%M#I;U=++1gJ>c|K(2(t0Yw}- z0!gCST)HT#w}~O#Jkyl7)UZO51}#9ts+^B38Cd#P!>v18@L-W4g9=23z0(k714{e5 z)gN9)1?jWX`Em%JF@Js=2{DM`MSHK&RkzmjooJL2Z33)DW=5lt_cCe0=yjmkVE04E z(?2p18aV!MPJ@WcaYNWqAQxtcK)RU81i2!J4$|3lwisq{MPfR-693LL3`$=AyJ;{0 zH?}T{ffdn+SU~L^S#QC=ICCPUA|6rynIJ+lBbwv1hO{bCE9DeerIJZSupuC+@d|Oz zLA7tIr)ZTF%w}sGImXAoI94&Dmj0P_is@w^Cd&WWnE!TUzFfW|BC{{o7~;G8BsMVT z_2$uMb7aq1Lug!`UWS-5q)hx1D7uZH7cjh`vf4{-r-RG~#A1(kanJd$=Lq!j#|C5P zFy=#fSN`3@iLsR--1N8BOCAFla~9znuIPB^=?2ZT-J6(z#-~10hVj;27izdDkm*o#fE)q_p@ErS(Ot$^Os+Mr^LmEp3}c=a?Nz14yU*en(U zJy#Dd9&F(+O+;j&LMeLg*BH)OG{~*TXmHJtmSNAe#MJay8bbwhTcmqxjHT#J7xaD) zweN-xX4bIL_7BVbL;8muW8D#rU}@mW1TI`eSOo$XmIkg&;KD_ORUmL-Y2eBPE?h)d z1p*hA2Chut!bOBtAaG%6;K~FpTtrv}0vDDBu1w&Dg_ z``eOa!JhVOrrRT*Sz6|L+OAq{_kK!nnq}I1cJHR`8^-+ZH;Y)SGrK77oDc@s1_aH5 z-m)`UARJ~g)2cene{7Dg*`XAQKWnP}!h*eJS4&L5WbD*Xn;oQ*& zOBtHxuRoq+UDsxN(j)pbXdCL3I;lcPnlrJ&EY~|S(=1nSH^Suuy`7=lF4RyiB$aI0 zD>>b{!sH&{sSjv`THXAC`xc#~>eLCT+h*ibpattT#zAS0zt1tfZoX{f4<=;OYqp^_ zj~zHyn%b&Ut@UFg$5aH{dOC#cVw2u)Zy~3Sk%wkBHUn+#58tkEvMLdJ>Zj?+V|VJa zAeY)))A^|<>2+DhlJEU`e@

X=bF6M@Mwpvv;o#5?AZAT&DWt%~pRe{Wy4bhAEd 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-100.png b/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..feeb5e940b93531790aa84a83e8fca549b874621 GIT binary patch literal 22114 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-125.png b/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..d8bbe728b157aec2ef3a922da66a0bfbdfb6edf5 GIT binary patch literal 24485 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-150.png b/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..f161a7a98a631ef144afc980f969287c3371fbc5 GIT binary patch literal 26058 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-400.png b/BuildFeedApp-Westminster/images/tiles/wide/620px.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..db0acfefc5d9c02bd0444448e26f82bbd0fc9b23 GIT binary patch literal 49260 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 literal 0 HcmV?d00001 diff --git a/BuildFeedApp-Westminster/package.appxmanifest b/BuildFeedApp-Westminster/package.appxmanifest new file mode 100644 index 0000000..ca7fad8 --- /dev/null +++ b/BuildFeedApp-Westminster/package.appxmanifest @@ -0,0 +1,31 @@ + + + + + + BuildFeedAppWestminster + Thomas Hounsell + images\storelogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MongoAuth/DatabaseConfig.cs b/MongoAuth/DatabaseConfig.cs new file mode 100644 index 0000000..888337d --- /dev/null +++ b/MongoAuth/DatabaseConfig.cs @@ -0,0 +1,26 @@ +using System.Configuration; + +namespace MongoAuth +{ + internal static class DatabaseConfig + { + public static string Host { get; private set; } + public static int Port { get; private set; } + public static string Database { get; private set; } + + static DatabaseConfig() + { + Host = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["data:MongoHost"]) ? ConfigurationManager.AppSettings["data:MongoHost"] : "localhost"; + + int _port; + bool success = int.TryParse(ConfigurationManager.AppSettings["data:MongoPort"], out _port); + if (!success) + { + _port = 27017; // mongo default port + } + Port = _port; + + Database = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["data:MongoDB"]) ? ConfigurationManager.AppSettings["data:MongoDB"] : "MongoAuth"; + } + } +} \ No newline at end of file diff --git a/MongoAuth/MongoAuth.csproj b/MongoAuth/MongoAuth.csproj new file mode 100644 index 0000000..f5812b8 --- /dev/null +++ b/MongoAuth/MongoAuth.csproj @@ -0,0 +1,73 @@ + + + + + Debug + AnyCPU + {7C67BFB9-1B3B-4676-A58D-10573DA82CFE} + Library + Properties + MongoAuth + MongoAuth + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MongoDB.Bson.2.0.1\lib\net45\MongoDB.Bson.dll + True + + + ..\packages\MongoDB.Driver.2.0.1\lib\net45\MongoDB.Driver.dll + True + + + ..\packages\MongoDB.Driver.Core.2.0.1\lib\net45\MongoDB.Driver.Core.dll + True + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MongoAuth/MongoMembershipProvider.cs b/MongoAuth/MongoMembershipProvider.cs new file mode 100644 index 0000000..bee5552 --- /dev/null +++ b/MongoAuth/MongoMembershipProvider.cs @@ -0,0 +1,457 @@ +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Web.Security; + +namespace MongoAuth +{ + public class MongoMembershipProvider : MembershipProvider + { + private const string _CollectionName = "members"; + + private bool _enablePasswordReset = true; + private int _maxInvalidPasswordAttempts = 5; + private int _minRequiredNonAlphanumericCharacters = 1; + private int _minRequriedPasswordLength = 12; + private int _passwordAttemptWindow = 60; + private bool _requiresUniqueEmail = true; + + private MongoClient _dbClient; + + public override string ApplicationName { get; set; } + + public override bool EnablePasswordReset + { + get { return _enablePasswordReset; } + } + + public override bool EnablePasswordRetrieval + { + get { return false; } + } + + public override int MaxInvalidPasswordAttempts + { + get { return _maxInvalidPasswordAttempts; } + } + + public override int MinRequiredNonAlphanumericCharacters + { + get { return _minRequiredNonAlphanumericCharacters; } + } + + public override int MinRequiredPasswordLength + { + get { return _minRequriedPasswordLength; } + } + + public override int PasswordAttemptWindow + { + get { return _passwordAttemptWindow; } + } + + public override MembershipPasswordFormat PasswordFormat + { + get { return MembershipPasswordFormat.Hashed; } + } + + public override string PasswordStrengthRegularExpression + { + get { return ""; } + } + + public override bool RequiresQuestionAndAnswer + { + get { return false; } + } + + public override bool RequiresUniqueEmail + { + get { return _requiresUniqueEmail; } + } + + public override void Initialize(string name, NameValueCollection config) + { + if (config == null) + { + throw new ArgumentNullException("config"); + } + + base.Initialize(name, config); + + _enablePasswordReset = tryReadBool(config["enablePasswordReset"], _enablePasswordReset); + _maxInvalidPasswordAttempts = tryReadInt(config["maxInvalidPasswordAttempts"], _maxInvalidPasswordAttempts); + _minRequiredNonAlphanumericCharacters = tryReadInt(config["minRequiredNonAlphanumericCharacters"], _minRequiredNonAlphanumericCharacters); + _minRequriedPasswordLength = tryReadInt(config["minRequriedPasswordLength"], _minRequriedPasswordLength); + _passwordAttemptWindow = tryReadInt(config["passwordAttemptWindow"], _passwordAttemptWindow); + _requiresUniqueEmail = tryReadBool(config["requiresUniqueEmail"], _requiresUniqueEmail); + + _dbClient = new MongoClient(new MongoClientSettings() + { + Server = new MongoServerAddress(DatabaseConfig.Host, DatabaseConfig.Port) + }); + } + + public override bool ChangePassword(string username, string oldPassword, string newPassword) + { + bool isAuthenticated = ValidateUser(username, oldPassword); + + if (isAuthenticated) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var mmTask = collection.Find(m => m.UserName.ToLower() == username.ToLower()).SingleOrDefaultAsync(); + mmTask.Wait(); + var mm = mmTask.Result; + + if (mm == null) + { + return false; + } + + byte[] salt = new byte[24]; + byte[] hash = calculateHash(newPassword, ref salt); + + mm.PassSalt = salt; + mm.PassHash = hash; + + var replaceTask = collection.ReplaceOneAsync(m => m.Id == mm.Id, mm); + replaceTask.Wait(); + + if (replaceTask.IsCompleted) + { + return true; + } + + return false; + } + + return false; + } + + public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer) + { + throw new NotImplementedException(); + } + + public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) + { + if (password.Length < MinRequiredPasswordLength) + { + status = MembershipCreateStatus.InvalidPassword; + return null; + } + + MembershipUser mu = null; + + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var dupeUsers = collection.Find(m => m.UserName.ToLower() == username.ToLower()).CountAsync(); + var dupeEmails = collection.Find(m => m.EmailAddress.ToLower() == email.ToLower()).CountAsync(); + + dupeUsers.Wait(); + dupeEmails.Wait(); + + if (dupeUsers.Result > 0) + { + status = MembershipCreateStatus.DuplicateUserName; + } + else if (dupeEmails.Result > 0) + { + status = MembershipCreateStatus.DuplicateEmail; + } + else + { + byte[] salt = new byte[24]; + byte[] hash = calculateHash(password, ref salt); + + MongoMember mm = new MongoMember() + { + Id = Guid.NewGuid(), + UserName = username, + PassHash = hash, + PassSalt = salt, + EmailAddress = email, + + IsApproved = false, + IsLockedOut = false, + + CreationDate = DateTime.Now, + LastLoginDate = DateTime.MinValue, + LastActivityDate = DateTime.MinValue, + LastLockoutDate = DateTime.MinValue + }; + + var insertTask = collection.InsertOneAsync(mm); + insertTask.Wait(); + + if (insertTask.Status == TaskStatus.RanToCompletion) + { + + status = MembershipCreateStatus.Success; + mu = new MembershipUser(this.Name, mm.UserName, mm.Id, mm.EmailAddress, "", "", mm.IsApproved, mm.IsLockedOut, mm.CreationDate, mm.LastLoginDate, mm.LastActivityDate, DateTime.MinValue, mm.LastLockoutDate); + } + else + { + status = MembershipCreateStatus.ProviderError; + } + } + + return mu; + } + + public override bool DeleteUser(string username, bool deleteAllRelatedData) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var deleteTask = collection.DeleteOneAsync(m => m.UserName.ToLower() == m.UserName.ToLower()); + deleteTask.Wait(); + + if (deleteTask.Result.IsAcknowledged && deleteTask.Result.DeletedCount == 1) + { + return true; + } + + return false; + } + + public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords) + { + throw new NotImplementedException(); + } + + public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords) + { + throw new NotImplementedException(); + } + + public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords) + { + MembershipUserCollection muc = new MembershipUserCollection(); + + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var users = collection.Find(new BsonDocument()); + + var totalRecordsTask = users.CountAsync(); + totalRecordsTask.Wait(); + totalRecords = Convert.ToInt32(totalRecordsTask.Result); + + users = users.Skip(pageIndex * pageSize).Limit(pageSize); + + var pageItemsTask = users.ToListAsync(); + pageItemsTask.Wait(); + + foreach (var mm in pageItemsTask.Result) + { + muc.Add(new MembershipUser(this.Name, mm.UserName, mm.Id, mm.EmailAddress, "", "", mm.IsApproved, mm.IsLockedOut, mm.CreationDate, mm.LastLoginDate, mm.LastActivityDate, DateTime.MinValue, mm.LastLockoutDate)); + } + + return muc; + + } + + public override int GetNumberOfUsersOnline() + { + throw new NotImplementedException(); + } + + public override string GetPassword(string username, string answer) + { + throw new NotImplementedException(); + } + + public override MembershipUser GetUser(string username, bool userIsOnline) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var mmTask = collection.Find(f => f.UserName.ToLower() == username.ToLower()).FirstOrDefaultAsync(); + mmTask.Wait(); + + var mm = mmTask.Result; + + return mm == null ? null : new MembershipUser(this.Name, mm.UserName, mm.Id, mm.EmailAddress, "", "", mm.IsApproved, mm.IsLockedOut, mm.CreationDate, mm.LastLoginDate, mm.LastActivityDate, DateTime.MinValue, mm.LastLockoutDate); + } + + public override MembershipUser GetUser(object providerUserKey, bool userIsOnline) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var mmTask = collection.Find(f => f.Id == (Guid)providerUserKey).FirstOrDefaultAsync(); + mmTask.Wait(); + + var mm = mmTask.Result; + + return mm == null ? null : new MembershipUser(this.Name, mm.UserName, mm.Id, mm.EmailAddress, "", "", mm.IsApproved, mm.IsLockedOut, mm.CreationDate, mm.LastLoginDate, mm.LastActivityDate, DateTime.MinValue, mm.LastLockoutDate); + } + + public override string GetUserNameByEmail(string email) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var mmTask = collection.Find(f => f.EmailAddress.ToLower() == email.ToLower()).FirstOrDefaultAsync(); + mmTask.Wait(); + + var mm = mmTask.Result; + + return mm.UserName; + } + + public override string ResetPassword(string username, string answer) + { + throw new NotImplementedException(); + } + + public void ChangeApproval(Guid Id, bool newStatus) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + var task = collection.UpdateOneAsync( + Builders.Filter.Eq(u => u.Id, Id), + Builders.Update.Set(u => u.IsApproved, newStatus) + ); + task.Wait(); + } + + public void ChangeLockStatus(Guid Id, bool newStatus) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + + var updateDefinition = new List>(); + updateDefinition.Add(Builders.Update.Set(u => u.IsLockedOut, newStatus)); + + if (newStatus) + { + updateDefinition.Add(Builders.Update.Set(u => u.LastLockoutDate, DateTime.Now)); + } + else + { + updateDefinition.Add(Builders.Update.Set(u => u.LockoutWindowAttempts, 0)); + updateDefinition.Add(Builders.Update.Set(u => u.LastLockoutDate, DateTime.MinValue)); + } + + var task = collection.UpdateOneAsync( + Builders.Filter.Eq(u => u.Id, Id), + Builders.Update.Combine(updateDefinition) + ); + task.Wait(); + } + + public override bool UnlockUser(string userName) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + var updTask = collection.UpdateOneAsync(Builders.Filter.Eq(m => m.UserName.ToLower(), userName.ToLower()), Builders.Update.Set(m => m.IsLockedOut, false)); + + updTask.Wait(); + + return updTask.Result.IsAcknowledged && updTask.Result.ModifiedCount == 1; + } + + public override void UpdateUser(MembershipUser user) + { + throw new NotImplementedException(); + } + + public override bool ValidateUser(string username, string password) + { + var collection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_CollectionName); + + var mmTask = collection.Find(f => f.UserName.ToLower() == username.ToLower()).FirstOrDefaultAsync(); + mmTask.Wait(); + + var mm = mmTask.Result; + + + if (mm == null || !(mm.IsApproved && !mm.IsLockedOut)) + { + return false; + } + + byte[] salt = mm.PassSalt; + byte[] hash = calculateHash(password, ref salt); + + bool isFail = false; + + for (int i = 0; i > hash.Length; i++) + { + isFail |= (hash[i] != mm.PassHash[i]); + } + + if (isFail) + { + // increment failed counter and lock out if required. + } + else + { + // reset failed counter + } + + return !isFail; + } + + private static byte[] calculateHash(string password, ref byte[] salt) + { + if (!salt.Any(v => v != 0)) + { + RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); + rng.GetBytes(salt); + } + + byte[] passwordBytes = Encoding.UTF8.GetBytes(password); + + byte[] hashPlaintext = new byte[salt.Length + passwordBytes.Length]; + + passwordBytes.CopyTo(hashPlaintext, 0); + salt.CopyTo(hashPlaintext, passwordBytes.Length); + + SHA512CryptoServiceProvider sha = new SHA512CryptoServiceProvider(); + byte[] hash = sha.ComputeHash(hashPlaintext); + + return hash; + } + + private static bool tryReadBool(string config, bool defaultValue) + { + bool temp = false; + bool success = bool.TryParse(config, out temp); + return success ? temp : defaultValue; + } + + private static int tryReadInt(string config, int defaultValue) + { + int temp = 0; + bool success = int.TryParse(config, out temp); + return success ? temp : defaultValue; + } + } + + public class MongoMember + { + [BsonId] + public Guid Id { get; set; } + + public string UserName { get; set; } + public byte[] PassHash { get; set; } + public byte[] PassSalt { get; set; } + public string EmailAddress { get; set; } + + public bool IsApproved { get; set; } + public bool IsLockedOut { get; set; } + + public DateTime CreationDate { get; set; } + public DateTime LastActivityDate { get; set; } + public DateTime LastLockoutDate { get; set; } + public DateTime LastLoginDate { get; set; } + + public DateTime LockoutWindowStart { get; set; } + public int LockoutWindowAttempts { get; set; } + } + +} diff --git a/MongoAuth/MongoRoleProvider.cs b/MongoAuth/MongoRoleProvider.cs new file mode 100644 index 0000000..c412434 --- /dev/null +++ b/MongoAuth/MongoRoleProvider.cs @@ -0,0 +1,247 @@ +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Web.Security; +using System.Collections.Specialized; + +namespace MongoAuth +{ + public class MongoRoleProvider : RoleProvider + { + private const string _RoleCollectionName = "roles"; + private const string _MemberCollectionName = "members"; + private MongoClient _dbClient; + + public override string ApplicationName + { + get { return ""; } + set { } + } + + public override void Initialize(string name, NameValueCollection config) + { + base.Initialize(name, config); + + _dbClient = new MongoClient(new MongoClientSettings() + { + Server = new MongoServerAddress(DatabaseConfig.Host, DatabaseConfig.Port) + }); + } + + public override void AddUsersToRoles(string[] usernames, string[] roleNames) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var roleTask = roleCollection.Find(r => roleNames.Contains(r.RoleName)).ToListAsync(); + roleTask.Wait(); + List roles = roleTask.Result; + + var userTask = memberCollection.Find(u => usernames.Contains(u.UserName)).ToListAsync(); + userTask.Wait(); + List users = userTask.Result; + + for (int i = 0; i < roles.Count; i++) + { + List newUsers = new List(); + + if (roles[i].Users != null) + { + newUsers.AddRange(roles[i].Users); + } + + var usersToAdd = from u in users + where !newUsers.Any(v => v == u.Id) + select u.Id; + + newUsers.AddRange(usersToAdd); + + roles[i].Users = newUsers.ToArray(); + + var update = roleCollection.ReplaceOneAsync(Builders.Filter.Eq(r => r.Id, roles[i].Id), roles[i]); + update.Wait(); + } + } + + public override void CreateRole(string roleName) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + + MongoRole r = new MongoRole() + { + Id = Guid.NewGuid(), + RoleName = roleName + }; + + var task = roleCollection.InsertOneAsync(r); + task.Wait(); + } + + public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + + var role = roleCollection.Find(r => r.RoleName == roleName).SingleOrDefaultAsync(); + role.Wait(); + + if (role.Result != null && role.Result.Users.Length > 0 && throwOnPopulatedRole) + { + throw new Exception("This role still has users"); + } + + roleCollection.DeleteOneAsync(r => r.RoleName == roleName); + return true; + } + + public override string[] FindUsersInRole(string roleName, string usernameToMatch) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var role = roleCollection.Find(r => r.RoleName == roleName).SingleOrDefaultAsync(); + role.Wait(); + + if (role == null) + { + throw new Exception("Role does not exist"); + } + + var users = memberCollection.Find(u => role.Result.Users.Contains(u.Id) && u.UserName.ToLower().Contains(usernameToMatch.ToLower())).ToListAsync(); + users.Wait(); + + return users.Result + .Select(r => r.UserName) + .ToArray(); + } + + public override string[] GetAllRoles() + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var roles = roleCollection.Find(new BsonDocument()).ToListAsync(); + roles.Wait(); + return roles.Result + .Select(r => r.RoleName) + .ToArray(); + } + + public override string[] GetRolesForUser(string username) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var user = memberCollection.Find(u => u.UserName.ToLower() == username.ToLower()).SingleOrDefaultAsync(); + user.Wait(); + + if (user == null) + { + throw new Exception("User does not exist"); + } + + var role = roleCollection.Find(new BsonDocument()).ToListAsync(); + role.Wait(); + + return (from r in role.Result + where r.Users != null + where r.Users.Any(u => u == user.Result.Id) + select r.RoleName).ToArray(); + } + + public override string[] GetUsersInRole(string roleName) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var role = roleCollection.Find(r => r.RoleName == roleName).SingleOrDefaultAsync(); + role.Wait(); + + if (role == null) + { + throw new Exception("Role does not exist"); + } + + var users = memberCollection.Find(u => role.Result.Users.Contains(u.Id)).ToListAsync(); + users.Wait(); + + return users.Result + .Select(u => u.UserName) + .ToArray(); + } + + public override bool IsUserInRole(string username, string roleName) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var user = memberCollection.Find(u => u.UserName.ToLower() == username.ToLower()).SingleOrDefaultAsync(); + user.Wait(); + + if (user.Result == null) + { + throw new Exception("User does not exist"); + } + + var role = roleCollection.Find(r => r.RoleName == roleName).SingleOrDefaultAsync(); + + if (role.Result == null) + { + throw new Exception("Role does not exist"); + } + + if (role.Result.Users == null) + { + return false; + } + + return role.Result.Users.Any(u => u == user.Result.Id); + } + + public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + var memberCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_MemberCollectionName); + + var roleTask = roleCollection.Find(r => roleNames.Any(n => n == r.RoleName)).ToListAsync(); + roleTask.Wait(); + List roles = roleTask.Result; + + var userTask = memberCollection.Find(u => usernames.Any(n => n == u.UserName)).ToListAsync(); + userTask.Wait(); + List users = userTask.Result; + + for (int i = 0; i < roles.Count; i++) + { + roles[i].Users = (from u in roles[i].Users + where !users.Any(v => v.Id == u) + select u).ToArray(); + + var update = roleCollection.ReplaceOneAsync(Builders.Filter.Eq(r => r.Id, roles[i].Id), roles[i]); + update.Wait(); + } + } + + public override bool RoleExists(string roleName) + { + var roleCollection = _dbClient.GetDatabase(DatabaseConfig.Database).GetCollection(_RoleCollectionName); + + var role = roleCollection.Find(r => r.RoleName == roleName).SingleOrDefaultAsync(); + role.Wait(); + + return role.Result != null; + } + } + + [DataObject] + public class MongoRole + { + [BsonId] + public Guid Id { get; set; } + + public string RoleName { get; set; } + + public Guid[] Users { get; set; } + } +} \ No newline at end of file diff --git a/MongoAuth/Properties/AssemblyInfo.cs b/MongoAuth/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0630ad8 --- /dev/null +++ b/MongoAuth/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MongoAuth")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MongoAuth")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7c67bfb9-1b3b-4676-a58d-10573da82cfe")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MongoAuth/packages.config b/MongoAuth/packages.config new file mode 100644 index 0000000..2f95291 --- /dev/null +++ b/MongoAuth/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file