#1860 frontend: drop user proxy, we don't use it
Merged 4 years ago by praiskup. Opened 4 years ago by schlupov.
copr/ schlupov/copr drop_user_proxy  into  main

@@ -0,0 +1,23 @@ 

+ """

+ drop proxy column

+ 

+ Revision ID: 45d0515bdc3f

+ Revises: e2b1cb42e6b7

+ Create Date: 2021-06-22 13:10:48.699369

+ """

+ 

+ import sqlalchemy as sa

+ from alembic import op

+ 

+ 

+ revision = '45d0515bdc3f'

+ down_revision = 'e2b1cb42e6b7'

+ 

+ 

+ def upgrade():

+     op.execute("""delete from "user" where proxy = true""")

+     op.drop_column('user', 'proxy')

+ 

+ 

+ def downgrade():

+     op.add_column('user', sa.Column('proxy', sa.BOOLEAN(), autoincrement=False, nullable=True))

@@ -21,7 +21,7 @@ 

  def add_user_function(name, mail, api_token=None, api_login=None):

      """

      You should not use regularly as that user will not be related to FAS account.

-     This should be used only for testing or adding special accounts e.g. proxy user.

+     This should be used only for testing.

      """

      user = models.User.query.filter(models.User.username == name).first()

      if user:

@@ -6,8 +6,7 @@ 

  @click.argument("name", required=True)

  @click.option('--admin/--no-admin', default=False)

  @click.option('--proven/--no-proven', default=False)

- @click.option('--proxy/--no-proxy', default=False)

- def alter_user(name, admin, proven, proxy):

+ def alter_user(name, admin, proven):

      """

      Alter user data

      """
@@ -19,7 +18,6 @@ 

  

      user.admin = admin

      user.proven = proven

-     user.proxy = proxy

  

      db.session.add(user)

      db.session.commit()

@@ -113,7 +113,6 @@ 

          null = {"timezone": None,

                  "proven": False,

                  "admin": False,

-                 "proxy": False,

                  "api_login": "",

                  "api_token": "",

                  "api_token_expiration": date(1970, 1, 1),

@@ -55,9 +55,6 @@ 

      # is this user admin of the system?

      admin = db.Column(db.Boolean, default=False)

  

-     # can this user behave as someone else?

-     proxy = db.Column(db.Boolean, default=False)

- 

      # list of groups as retrieved from openid

      openid_groups = db.Column(JSONEncodedDict)

  

@@ -90,8 +90,7 @@ 

      infos = []

      # TODO: don't use WTFform for parsing and validation here

      # are there any arguments in POST which our form doesn't know?

-     proxyuser_keys = ["username"]  # When user is proxyuser, he can specify username of delegated author

-     allowed = list(form.__dict__.keys()) + proxyuser_keys

+     allowed = list(form.__dict__.keys())

      for post_key in flask.request.form.keys():

          if post_key not in allowed:

              infos.append("Unknown key '{key}' received.".format(key=post_key))

@@ -257,10 +257,6 @@ 

              user = UsersLogic.get_by_api_login(apt_login).first()

              if (user and user.api_token == token and

                      user.api_token_expiration >= datetime.date.today()):

- 

-                 if user.proxy and "username" in flask.request.form:

-                     user = UsersLogic.get(flask.request.form["username"]).first()

- 

                  token_auth = True

                  flask.g.user = user

          if not token_auth:

Seems like this needs a test-suite fix.

We should also drop this user

coprdb=# select * from public.user where proxy=true;
┌──────┬────────┬───────┬────────────────┬───────────────┬───────┐
│  id  │ proven │ admin │    username    │ openid_groups │ proxy │
├──────┼────────┼───────┼────────────────┼───────────────┼───────┤
│ 3677 │ f      │ f     │ module_builder │               │ t     │
└──────┴────────┴───────┴────────────────┴───────────────┴───────┘
(1 row)

It seems like there are still some leftovers in the code

[jkadlcik frontend]$ git grep proxy coprs_frontend/coprs |grep user
coprs_frontend/coprs/views/api_ns/api_general.py:    proxyuser_keys = ["username"]  # When user is proxyuser, he can specify username of delegated author
coprs_frontend/coprs/views/api_ns/api_general.py:    allowed = list(form.__dict__.keys()) + proxyuser_keys
coprs_frontend/coprs/views/misc.py:                if user.proxy and "username" in flask.request.form:

I think we can change the APIv1 code to just

allowed = list(form.__dict__.keys())

rebased onto 86bec68c4ad0df6d927fc897bcf2c1272ba56fa5

4 years ago

We should run:

delete from public.user where proxy=true;

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

delete from public.user where proxy=true;

Can we run right before we remove that attribute, in the new migration script?

Build succeeded.

This is weird change, probably wrong ... the whole condition is probably related to proxy users.

delete from public.user where proxy=true;

Can we run right before we remove that attribute, in the new migration script?

Sure, I just wanted to have the comment here not to forget about it.

rebased onto 47465411442d38207ab02bc9044f431fa1b6f594

4 years ago

Build succeeded.

It would be better to use delete from "user" where proxy = true, that would be less PG-only.

rebased onto 6087992

4 years ago

Build succeeded.

Pull-Request has been merged by praiskup

4 years ago