PageRenderTime 39ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/Database/Database.cs

https://github.com/cmath/SimpleLoginManager
C# | 84 lines | 71 code | 12 blank | 1 comment | 12 complexity | 07712f1c17322cb33feaf4f90dd17f2d MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.Composition;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml.Linq;
  8. namespace Login.Database
  9. {
  10. [Export(typeof(IDatabase)), Export]
  11. public class Database : IDatabase
  12. {
  13. XDocument doc_;
  14. public Database ( )
  15. {
  16. doc_ = XDocument.Load("Database.xml");
  17. }
  18. private void Save()
  19. {
  20. doc_.Save("Database.xml");
  21. }
  22. private XElement MakeQuery ( string Login )
  23. {
  24. var query = from user in doc_.Element("Root").Elements("User")
  25. where ( string )user.Element("Login") == Login
  26. select user;
  27. if ( query.Count( ) == 1 )
  28. {
  29. return query.First( );
  30. }
  31. return null;
  32. }
  33. public int GetNumberOfLoginTries ( string Login )
  34. {
  35. //var ref_how_it_works = doc_.Element("Root").Elements("User").Single(x => ( string )x.Element("Login") == Login);
  36. var query = MakeQuery(Login);
  37. if ( query != null )
  38. {
  39. return (int)query.Element("Tries");
  40. }
  41. return -1;
  42. }
  43. public string GetAllowedIp ( string Login )
  44. {
  45. var query = MakeQuery(Login);
  46. if ( query != null )
  47. {
  48. return ( string )query.Element("IpAddress");
  49. }
  50. return "";
  51. }
  52. public bool ValidateLoginAndPassword ( string Login, string Password )
  53. {
  54. var query = MakeQuery(Login);
  55. if ( query != null )
  56. {
  57. return Password == (string)query.Element("Password");
  58. }
  59. return false;
  60. }
  61. public void UpdateNumberOfLoginTries ( string Login )
  62. {
  63. var query = MakeQuery(Login);
  64. if ( query != null )
  65. {
  66. int current_number = (int)query.Element("Tries");
  67. query.SetElementValue("Tries", ++current_number);
  68. this.Save( );
  69. }
  70. }
  71. }
  72. }