شركة التطبيقات المتكاملة لتصميم النظم البرمجية الخاصة ش.ش.و.

Integrated Applications Programming Company

Skip Navigation LinksHome » Code Library » Authentication

Public general use code classes and xml files that we've compiled and used over the years:

Manage and verify user logging and passwords. The administrator will define the user's password and logging website. The service will issue a true of false according to authentication.

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:   
   5:  namespace Ia.Cl.Model
   6:  {
   7:      ////////////////////////////////////////////////////////////////////////////
   8:   
   9:      /// <summary publish="true">
  10:      /// Manage and verify user logging and passwords. The administrator will define the user's password and logging website. The service will issue a true of false according to authentication.
  11:      /// </summary>
  12:      /// 
  13:      /// <code>
  14:      /// bool b;
  15:      /// Uri uri = new Uri("http://*");
  16:      /// b = Ia.Cl.Model.Authentication.Validate("name", uri);
  17:      /// </code>
  18:      /// 
  19:      /// <remarks> 
  20:      /// Copyright � 2001-2015 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
  21:      ///
  22:      /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
  23:      /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  24:      ///
  25:      /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  26:      /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  27:      /// 
  28:      /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
  29:      /// 
  30:      /// Copyright notice: This notice may not be removed or altered from any source distribution.
  31:      /// </remarks>
  32:   
  33:      ////////////////////////////////////////////////////////////////////////////
  34:   
  35:      public partial class Authentication
  36:      {
  37:          /*
  38:          static int seed;
  39:          static Random r;
  40:  
  41:          static string number = "1234567890";
  42:          static string uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  43:          static string lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
  44:  
  45:          private const string traceCookieName = "traceCookie";
  46:           */
  47:   
  48:          /// <summary/>
  49:          public Authentication() { }
  50:   
  51:          /// <summary/>
  52:          public int Id { get; set; }
  53:          /// <summary/>
  54:          public string Password { get; set; }
  55:          /// <summary/>
  56:          public string Host { get; set; }
  57:          /// <summary/>
  58:          public DateTime Created { get; set; }
  59:          /// <summary/>
  60:          public DateTime Updated { get; set; }
  61:   
  62:          ////////////////////////////////////////////////////////////////////////////
  63:   
  64:          /// <summary>
  65:          ///
  66:          /// </summary>
  67:          public static bool Create(Authentication newItem, out string result)
  68:          {
  69:              bool b;
  70:   
  71:              b = false;
  72:              result = "";
  73:   
  74:              using (var db = new Ia.Cl.Model.IaDbContext())
  75:              {
  76:                  //db.Authentications.Add(newItem);
  77:                  //db.SaveChanges();
  78:   
  79:                  b = false; // true;
  80:              }
  81:   
  82:              return b;
  83:          }
  84:   
  85:          ////////////////////////////////////////////////////////////////////////////
  86:   
  87:          /// <summary>
  88:          ///
  89:          /// </summary>
  90:          public static void Create(string password, Uri url, Guid guid)
  91:          {
  92:              bool newItemCreated;
  93:              Authentication newItem;
  94:   
  95:              newItem = new Authentication();
  96:   
  97:              // insert new item
  98:              newItem.Password = password;
  99:              newItem.Host = Ia.Cl.Model.Default.BasicHost(url);
 100:              newItem.Created = DateTime.UtcNow.AddHours(3);
 101:   
 102:              string result;
 103:              newItemCreated = Authentication.Create(newItem, out result);
 104:          }
 105:   
 106:          ////////////////////////////////////////////////////////////////////////////
 107:   
 108:          /// <summary>
 109:          /// Validate a password by sending it and the Uri of the website to this function
 110:          /// <param name="password">Password of the user</param>
 111:          /// <param name="uri">Uri of webpage</param>
 112:          /// </summary>
 113:          public static bool Validate(string password, Uri uri)
 114:          {
 115:              bool validated;
 116:              string host;
 117:              //Authentication item;
 118:   
 119:              host = Ia.Cl.Model.Default.BasicHost(uri);
 120:   
 121:              using (var db = new Ia.Cl.Model.IaDbContext())
 122:              {
 123:                  // the matching is case-insensitive
 124:                  //item = (from q in db.Authentications where q.Password.ToLower() == password.ToLower() && q.Host == host select q).SingleOrDefault();
 125:   
 126:                  validated = false; // (item != null);
 127:              }
 128:   
 129:              return validated;
 130:          }
 131:   
 132:          ////////////////////////////////////////////////////////////////////////////
 133:   
 134:          /// <summary>
 135:          ///
 136:          /// </summary>
 137:          public static Authentication Read(int id)
 138:          {
 139:              Authentication item;
 140:   
 141:              using (var db = new Ia.Cl.Model.IaDbContext())
 142:              {
 143:                  item = null; // (from q in db.Authentications where q.Id == id select q).SingleOrDefault();
 144:              }
 145:   
 146:              return item;
 147:          }
 148:   
 149:          ////////////////////////////////////////////////////////////////////////////
 150:   
 151:          /// <summary>
 152:          ///
 153:          /// </summary>
 154:          public static List<Authentication> ReadList()
 155:          {
 156:              List<Authentication> list;
 157:   
 158:              using (var db = new Ia.Cl.Model.IaDbContext())
 159:              {
 160:                  list = null; // (from q in db.Authentications select q).ToList();
 161:              }
 162:   
 163:              return list;
 164:          }
 165:   
 166:          ////////////////////////////////////////////////////////////////////////////
 167:   
 168:          /// <summary>
 169:          ///
 170:          /// </summary>
 171:          public static bool Update(Authentication updatedItem, out string result)
 172:          {
 173:              bool b;
 174:   
 175:              b = false;
 176:              result = "";
 177:   
 178:              using (var db = new Ia.Cl.Model.IaDbContext())
 179:              {
 180:                  /*
 181:                  updatedItem = (from q in db.Authentications where q.Id == updatedItem.Id select q).SingleOrDefault();
 182:  
 183:                  updatedItem.Updated = DateTime.UtcNow.AddHours(3);
 184:  
 185:                  db.Authentications.Attach(updatedItem);
 186:  
 187:                  var v = db.Entry(updatedItem);
 188:                  v.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
 189:                  db.SaveChanges();
 190:                  */
 191:   
 192:                  b = false; // true;
 193:              }
 194:   
 195:              return b;
 196:          }
 197:   
 198:          ////////////////////////////////////////////////////////////////////////////
 199:   
 200:          /// <summary>
 201:          ///
 202:          /// </summary>
 203:          public static bool Delete(int id, out string result)
 204:          {
 205:              bool b;
 206:   
 207:              b = false;
 208:              result = "";
 209:   
 210:              using (var db = new Ia.Cl.Model.IaDbContext())
 211:              {
 212:                  //var v = (from q in db.Authentications where q.Id == id select q).FirstOrDefault();
 213:   
 214:                  //db.Authentications.Remove(v);
 215:                  //db.SaveChanges();
 216:   
 217:                  b = false; // true;
 218:              }
 219:   
 220:              return b;
 221:          }
 222:   
 223:          ////////////////////////////////////////////////////////////////////////////
 224:   
 225:          /// <summary>
 226:          /// Returns randomly generated strings in password and authenticate sting formats for copy and past purposes.
 227:          /// The format is variable according to user preference.
 228:          /// </summary>
 229:          public static string RandomPasswordOfLength(int passwordLength)
 230:          {
 231:              string password;
 232:   
 233:              password = Guid.NewGuid().ToString().ToLower().Substring(0, passwordLength);
 234:   
 235:              return password;
 236:          }
 237:   
 238:          /*
 239:          ////////////////////////////////////////////////////////////////////////////
 240:  
 241:          /// <summary>
 242:          ///
 243:          /// </summary>
 244:          public static string ReturnStringWithNumberAndUpperAndLowerLetters(int length)
 245:          {
 246:              int i;
 247:              string range, s;
 248:  
 249:              // for a 64 long string
 250:              range = number + uppercaseLetters + lowercaseLetters; s = "";
 251:              for (i = 0; i < length; i++) s += RandomCharacter(range.ToCharArray(), r);
 252:  
 253:              return s;
 254:          }
 255:  
 256:          ////////////////////////////////////////////////////////////////////////////
 257:  
 258:          /// <summary>
 259:          ///
 260:          /// </summary>
 261:          public static string ReturnStringWithNumberAndUpperLetters(int length)
 262:          {
 263:              int i;
 264:              string range, s;
 265:  
 266:              range = number + uppercaseLetters; s = "";
 267:  
 268:              for (i = 0; i < length; i++)
 269:              {
 270:                  s += RandomCharacter(range.ToCharArray(), r);
 271:                  if ((i + 1) % 5 == 0 && (i + 1) < 30) s += "-";
 272:              }
 273:  
 274:              return s;
 275:          }
 276:  
 277:          ////////////////////////////////////////////////////////////////////////////
 278:  
 279:          /// <summary>
 280:          ///
 281:          /// </summary>
 282:          public static string ReturnStringWithNumberAndLowerLetters(int length)
 283:          {
 284:              int i;
 285:              string range, s;
 286:  
 287:              range = number + lowercaseLetters; s = "";
 288:  
 289:              for (i = 0; i < length; i++) s += RandomCharacter(range.ToCharArray(), r);
 290:  
 291:              return s;
 292:          }
 293:  
 294:          ////////////////////////////////////////////////////////////////////////////
 295:  
 296:          /// <summary>
 297:          ///
 298:          /// </summary>
 299:          private static char RandomCharacter(char[] line, Random r)
 300:          {
 301:              // return a random char from line
 302:              int i;
 303:              i = r.Next(line.Length);
 304:              return line[i];
 305:          }
 306:           */
 307:   
 308:          ////////////////////////////////////////////////////////////////////////////
 309:          ////////////////////////////////////////////////////////////////////////////
 310:      }
 311:  }