<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: PREM SAGAR KUSHWAHA</title>
    <description>The latest articles on DEV Community by PREM SAGAR KUSHWAHA (@bithunter).</description>
    <link>https://dev.to/bithunter</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F848144%2Fab88ab01-3819-4d36-801c-1df81cdc6427.jpeg</url>
      <title>DEV Community: PREM SAGAR KUSHWAHA</title>
      <link>https://dev.to/bithunter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bithunter"/>
    <language>en</language>
    <item>
      <title>Adding More than one User in flask_login in Python flask.</title>
      <dc:creator>PREM SAGAR KUSHWAHA</dc:creator>
      <pubDate>Thu, 21 Apr 2022 20:27:52 +0000</pubDate>
      <link>https://dev.to/bithunter/adding-more-than-one-user-in-flasklogin-in-python-flask-1k14</link>
      <guid>https://dev.to/bithunter/adding-more-than-one-user-in-flasklogin-in-python-flask-1k14</guid>
      <description>&lt;p&gt;For identifying user we take one extra input at the time of submission of html form.Following is step to login two user: -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get a label of user 1 at the time of submit html form.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form action="/login" method="post"&amp;gt;
            {% include "messages.html" %}
            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="email" class="form-control mt-2" name="ulmail" placeholder="Enter E-mail" required&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="password" class="form-control mt-2" name="ulpass" placeholder="Enter password" required&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="text" class="form-control mt-2" name="ulabel" value="User" readonly&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="text-center"&amp;gt;
                &amp;lt;br&amp;gt;
                &amp;lt;button type="submit" class="btn btn-primary btn-rounded"&amp;gt;Log In&amp;lt;/button&amp;gt;

            &amp;lt;/div&amp;gt;


        &amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;by the above form we are taking input from user 1 in last division which name = "label" and value = "User". and it is readonly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;then take input from second user
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form action="/doctorlogin" method="post"&amp;gt;
            {% include "messages.html" %}
            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="email" class="form-control mt-2" name="dlmail" placeholder="Enter E-mail" required&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="text" class="form-control mt-2" name="dluprn" placeholder="Enter UPRN" required&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="password" class="form-control mt-2" name="dlpass" placeholder="Enter password" required&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="form-group"&amp;gt;
                &amp;lt;input type="text" class="form-control mt-2" name="dlabel" value="Doctor" readonly&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="text-center"&amp;gt;
                &amp;lt;br&amp;gt;
                &amp;lt;button type="submit" class="btn btn-primary btn-rounded"&amp;gt;Log In&amp;lt;/button&amp;gt;

            &amp;lt;/div&amp;gt;


        &amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here name="dlabel" and value="Doctor".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now in your python file defile a global varaible. *&lt;em&gt;Note: I am assuming that you have created two different Table in database for two users and imported successfully in your python file. *&lt;/em&gt;
here user 1= User and
 user 2= Doctor.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dl  = "nan"
@login_manager.user_loader
def load_user(user_id):
    if dl == "Doctor":
        return Doctor.query.get(int(user_id))
    elif dl == "User":
        return User.query.get(int(user_id))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here I am using sqlalchemy module to connect mysql databse(XAMPP).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:@127.0.0.2:3307/medserv"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app) 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Doctor", and " User" are two different table in "medserv" Database. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now for login user 1:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route("/login", methods=['POST','GET'])
def login():
    if request.method == "POST":
        global dl
        email = request.form.get('ulmail') 
        upass = request.form.get('ulpass')
        dl  = request.form.get('ulabel')
        user = User.query.filter_by(umail = email).first_or_404(description='There is no data with {}'.format(email))

        if user and user.upass == upass:

            login_user(user)
            postsdata = Userdata.query.filter_by(email = email).all()
            flash("Login Successful", "success")
            return render_template("cusers.html", postsdata=postsdata)
        else:
            flash("Invalid Credential", "danger")
            return render_template("userlogin.html")

    return render_template("userlogin.html")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;define dl as global in this class and store value of label you collected from form into "dl" variable and start login session. You will be login as user 1 because your dl=="User" so your login manager will be redirected to table 2 or we can say login for User table.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now for login user 2
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route("/doctorlogin", methods=['POST','GET'])
def doctorlogin():
    if request.method == "POST":
        global dl
        email = request.form.get('dlmail') 
        upass = request.form.get('dlpass')
        uprn = request.form.get('dluprn')
        dl = request.form.get('dlabel')
        user = Doctor.query.filter_by(dmail = email).first_or_404(description='There is no data with {}'.format(email))

        if user and user.dpass == upass and user.duprn==uprn:

            login_user(user)

            postsdata = Doctordata.query.filter_by(udcon = email).all()
            flash("Login Successful", "success")
            return render_template("docdash.html",postsdata=postsdata)
        else:
            flash("Invalid Credential", "danger")
            return render_template("doctorlogin.html")

    return render_template("doctorlogin.html")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now dl=="Doctor" you will be login as user 2 so you will retrieve information from table corresponded to Doctor.&lt;/p&gt;

</description>
      <category>python</category>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
