/Database/Database.cs
C# | 84 lines | 71 code | 12 blank | 1 comment | 12 complexity | 07712f1c17322cb33feaf4f90dd17f2d MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.Composition;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml.Linq;
- namespace Login.Database
- {
- [Export(typeof(IDatabase)), Export]
- public class Database : IDatabase
- {
- XDocument doc_;
- public Database ( )
- {
- doc_ = XDocument.Load("Database.xml");
- }
- private void Save()
- {
- doc_.Save("Database.xml");
- }
- private XElement MakeQuery ( string Login )
- {
- var query = from user in doc_.Element("Root").Elements("User")
- where ( string )user.Element("Login") == Login
- select user;
- if ( query.Count( ) == 1 )
- {
- return query.First( );
- }
- return null;
- }
- public int GetNumberOfLoginTries ( string Login )
- {
- //var ref_how_it_works = doc_.Element("Root").Elements("User").Single(x => ( string )x.Element("Login") == Login);
- var query = MakeQuery(Login);
- if ( query != null )
- {
- return (int)query.Element("Tries");
- }
- return -1;
- }
- public string GetAllowedIp ( string Login )
- {
- var query = MakeQuery(Login);
- if ( query != null )
- {
- return ( string )query.Element("IpAddress");
- }
- return "";
- }
- public bool ValidateLoginAndPassword ( string Login, string Password )
- {
- var query = MakeQuery(Login);
- if ( query != null )
- {
- return Password == (string)query.Element("Password");
- }
- return false;
- }
- public void UpdateNumberOfLoginTries ( string Login )
- {
- var query = MakeQuery(Login);
- if ( query != null )
- {
- int current_number = (int)query.Element("Tries");
- query.SetElementValue("Tries", ++current_number);
- this.Save( );
- }
- }
- }
- }