public virtual ResponseAuth Authenticate(int client_id, string username, string password)
        {
            //validate if data is passed with all 3 parameters.
            ResponseAuth resp = new ResponseAuth();

            if (client_id < 1)
            {
                resp.message = "Please select a Client.";
                return(resp);
            }
            if (username.Trim().Length == 0)
            {
                resp.message = "Please enter a Username.";
                return(resp);
            }
            if (password.Trim().Length == 0)
            {
                resp.message = "Please enter a Password.";
                return(resp);
            }
            //var usermodel = Bango.Container.GetInstance<IUserModel>();
            //UserService<UserModel, int?> userSrvc = (UserService<UserModel, int?>)Bango.Container.GetInstance(typeof(IUserService<UserModel, int?>));
            var userSrvc = GetUserServiceInstance();

            using (DbConnect con = new DbConnect())
            {
                resp = userSrvc.AuthenticateUserNamePasword(con, client_id, username, password);
                //generate token
                string token = string.Empty;
                if (resp.success)
                {
                    token = GenerateToken();
                }
                resp.token = token;
                //save data in session & generate
                SessionLogService sessionSrvc = new SessionLogService();
                DynamicDictionary data_param  = new DynamicDictionary();
                data_param.Add("client_id", client_id);
                data_param.Add("user_id", resp.user_id);
                DateTime login_datetime = DateTime.Now;
                data_param.Add("login_datetime", login_datetime);
                data_param.Add("expire_datetime", GetExpirtyDateTime(login_datetime));
                data_param.Add("token", token);

                sessionSrvc.Insert(con, data_param);
                //SessionLogModel
            }

            return(resp);
        }
Beispiel #2
0
        public ResponseAuth AuthenticateUserNamePasword(DbConnect con, int client_id, string username, string password)
        {
            ResponseAuth resp     = new ResponseAuth();
            string       template = @"
                SELECT id, client_id, username, password, name_en, name_np,email, status
                FROM rbac_user u
                /**where**/
                AND u.status=true AND u.is_deleted=false";
            //creating command & preparing command
            string       alias = DbServiceUtility.GetTableAliasForTable("u");
            BangoCommand cmd   = new BangoCommand(MyroCommandTypes.SqlBuilder);

            cmd.Template = cmd.SqlBuilder.AddTemplate(template);
            UserModel mdl = new UserModel();

            DbServiceUtility.BindDeleteParameter(cmd, mdl, alias);
            DynamicDictionary data_param = new DynamicDictionary();

            data_param.Add("client_id", client_id);
            data_param.Add("username", username);
            DbServiceUtility.BindParameters(cmd, mdl, data_param, alias, SearchTypes.Equal);

            //executing the command
            string finalSql = cmd.FinalSql;

            if (finalSql.Length > 0)
            {
                IEnumerable <SqlMapper.DapperRow> items = null;
                try
                {
                    items = con.DB.Query <SqlMapper.DapperRow>(finalSql, cmd.FinalParameters, true);
                }
                catch (Npgsql.NpgsqlException ex)
                {
                    LogTrace.WriteErrorLog(ex.ToString());
                    LogTrace.WriteDebugLog(string.Format("Select SQL which gave exception:\r{0}", ex.Routine));
                }

                Errors = con.DB.GetErros();
                if (items != null && items.Count() > 0)
                {
                    DynamicDictionary data = Conversion.ToDynamicDictionary(items.FirstOrDefault());
                    if (data.GetValueAsString("password") == EncryptPassword(password))
                    {
                        resp.success = true;
                        resp.user_id = data.GetValueAsInt("id");
                        resp.email   = data.GetValueAsString("email");
                        resp.message = "Login successfull";
                    }
                    else
                    {
                        resp.message = "Username and/or Password is invalid.";
                    }
                }
                else
                {
                    if (Errors.Count > 0)
                    {
                        resp.message = "Technical Problem occurred.";
                    }
                    else
                    {
                        resp.message = "Please provide a valid Username.";
                    }
                }
            }

            return(resp);
        }