कोड इग्नाइटर के लिए यूजर अथेंटिकेशन क्लास (उपयोगकर्ता अभिप्रमाणन क्लास)

मैं एक पीएचपी के वेब सामग्री प्रबंधन तंत्र (Content Management System) को विकसित कर रहा था । उसी के लिए उपयोगकर्ताओं के प्रबंधन हेतु एक उपयोगकर्ता अभिप्रमाणन क्लास(user authentication class) को लिखा। अभी मैंने सोचा कि इसे सभी से साझा करना चाहिए ताकि और लोग भी इसका उपयोग कर सकें| इस क्लास को मैंने मुख्य रूप से कोड इग्नाइटर फ्रेमवर्क में इस्तेमाल करने के लिए लिखा था। आप अपने अनुप्रयोग में इसे आवश्यकता अनुसार परिवर्तित कर सकते हैं। ध्यान रखें कि पूरे अनुप्रयोग में इस क्लास की केवल एक ही “इंस्टेंस” इस्तेमाल की जानी चाहिए।

ये रही क्लास:

[php]<?php class Authentication{
function __construct() {
//सत्र प्रारंभ करें
session_start();
}

private $_loginpage;
function setLoginPage($loginpage){
//सत्रारंभ हेतु पृष्ठ का निर्धारण करें
$this->_loginpage = $loginpage;
}
function getLoginPage(){
//सत्रारंभ हेतु पृष्ठ का नाम प्राप्त करें
return $this->_loginpage;
}

private $_useracls;
function setUserACLs($a){
//एसीएल अर्थात एक्सेस कंट्रोल लिस्ट इसे आप पद के समान भी मान सकते हैं
//array("admin","author","editor","worker","manager");
$this->_useracls = $a;
}
function requireACL($req_roles){
//यह निश्चित करें कि उपयोगकर्ता के लिए कोई विशेष पद होना आवश्यक है, अन्यथा उसे सत्रारंभ वाले पृष्ठ पर पहुंचा दें
if(!$this->_requireACL($req_roles)){
$this->destroyUserInfo();
redirect($this->_loginpage);
}
}
private function _requireACL($req_roles){
foreach($req_roles as $req_role){
if($this->checkACL($req_role)){
return true;
}
}
return false;
}
function checkACL($role){
//उपयोगकर्ता के पास कोई विशेष पद है अथवा नही यह जांचें
$roles = $this->getUserACLs();
if($roles!=false){
foreach($roles as $r){
if($r == $role){
return true;
}
}
}
return false;
}
function getUserACLs(){
//उपयोगकर्ता के पद प्राप्त करें।
if(isset($_SESSION["roles"])){
return $_SESSION["roles"];
}else{
return false;
}
}
function setUserToken($token){
//उपयोगकर्ता के लिए एक टोकन निर्धारित करें। यह उसका यूजर आईडी, ईमेल या कुछ भी हो सकता है
if(is_array($this->_useracls)){
$_SESSION["token"]=$token;
$_SESSION["roles"]= $this->_useracls;
}else{
$_SESSION["token"]=$token;
}
}
function getUserToken(){
//उपयोगकर्ता का टोकन प्राप्त करें
if(isset($_SESSION["token"])){
return $_SESSION["token"];
}else{
return false;
}
}
function getSessionId(){
//सत्र की पहचान संख्या (आईडी) प्राप्त करें
return session_id();
}
function requireLoggedIn(){
//सत्रारंभ की आवश्यकता को निर्धारित करें
if($this->checkLoggedIn()==false){
redirect($this->_loginpage);
}
}
function checkLoggedIn(){
//जांचे कि क्या उपयोगकर्ता ने सत्र आरंभ किया है अथवा नही?
if($this->getUserToken()==false){
return false;
}else{
return true;
}
}
function destroyUserInfo(){

session_destroy();
}
}[/php]

और ये रहा उपयोग का तरीका:

जिस कंट्रोलर के फंग्शन अथवा पूरे फंग्शन को आप सुरक्षित बनाना चाहते हैं उसे कुछ इस प्रकार लिखना होगा।

$this->authentication->setLoginPage(“/login”); //सत्रांभ पृष्ठ का निर्धारण किया।
$this->authentication->requireLoggedIn(); //यह निर्धारित किया कि सत्रारंभ आवश्यक है।
$this->authentication->requireACL(array(“admin”)); //यह निर्धारित किया कि सत्रारंभ किए व्यक्ति के पास “admin” नाम का पद होना आवश्यक है।

यदि आप पूरे कंट्रोलर को ही सुरक्षित करना चाहते हैं तो कंट्रोलर के __construct() फंग्शन में उपरोक्त कोड लिखें।

इस क्लास को उपयोग करने के लिए इसे लाइब्रेरी वाले फोल्डर में रखें और आटोलोड वाली फाइल में इसका नाम लाइब्रेरीज़ वाली एरे में रख दें ताकि यह अनुप्रयोग के शुरू होते ही स्वत: प्रारंभ हो जाए।

What you think about this article?

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA Image

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>