Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Alpha's Security and Updates to an app

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Re: Alpha's Security and Updates to an app

    Maybe someone should post a wishlist item so that developers have the option of storing groups and users in ordinary tables, with optional encryption. i.e. Using Alpha's security model give the developer an option on where the data is stored.

    OK, I've posted the idea to the wishlist at IdeaScale.

    Hopefully lots of folks will log in to "Agree". Right now its in 189th place on the "important to me" scale.
    Last edited by Tom Cone Jr; 04-06-2013, 10:02 AM.

    Comment


      #17
      Re: Alpha's Security and Updates to an app

      Here is part of it that Tom Cone, Stan and others helped me with years ago.


      dim global versionnumber as n
      versionnumber = A5_GetAppVersionNumber()
      dim global cpath as c
      dim global cmast as c
      dim global regusers as n
      dim global runtimeusers as n
      dim global totalusers as n

      statusbar.hide()

      cpath = a5.Get_Path()
      cmast = a5.GET_MASTER_PATh()
      regusers = a5_registration_license_inuse(cmast+"\sales.muf")
      runtimeusers = a5_registration_license_inuse(cmast+"\sales.rmuf")
      totalusers = runtimeusers+regusers+1

      dim global scode as c
      dim global stat as c = "A"
      dim global username as c = ""
      dim global salesman as c = ""
      dim global cellphone as c = ""
      dim global usernow as c = ""
      dim global password as c = ""
      dim global reverse as c = ""
      dim global worknumber as n = 0
      dim global secused as c = ""
      dim global group as c = ""
      dim global lot as c = ""
      dim global nowpath as c = ""
      dim global compbat as n = 0
      dim global comptire as n = 0
      dim global comptaxrate as n = 0
      dim global comppred as n = 0
      dim global complemon as n = 0
      dim global comptags as n = 0
      dim global comppmtterm as n = 0
      dim global comptermtype as n = 0
      dim global compapr as n = 0
      dim global compnewwheels as n = 0
      dim global compantitheft as n = 0
      dim global permissions as c = ""
      dim global userlot as c = ""
      dim global cpath as c = ""
      dim global electron as n = 0
      dim global compdtaxrate as n = 0
      dim global docrate as n = 0
      dim global compname as c = ""
      dim global gotoileads as L = .f.
      dim global gotosales as L = .f.
      dim global gotoother as L = .f.
      dim global gotoreports as L = .f.
      dim global gotocsi as L = .f.
      dim global buycar as L = .f.
      dim global gotoslsschedule as L = .f.
      dim global gotoslslabels as L = .f.
      dim global setupemail as L = .f.
      dim global seedealnumbers as L = .f.
      dim global reshadow as L = .f.
      dim global gotocomp as L = .f.
      dim global cleantbls as L = .f.
      dim global compaddress as c = ""
      dim global compcsz as c = ""
      dim global gotoinv as L = .f.
      dim global editletters as L = .f.
      dim global gotoslspeople as L = .f.
      dim global editownpassword as L = .f.
      dim global editownuserinfo as L = .f.
      dim global seeallslspeople as L = .f.
      dim global editpermiss as L = .f.
      dim global surl as c = "http://"
      dim global gotovendors as L = .f.
      dim global gotoagents as L = .f.
      dim global gotorebates as L = .f.
      dim global deletesales as L = .f.
      dim global makebackup as L = .f.
      dim global advertisers as L = .f.
      dim global editcompinfo as L = .f.
      dim global gotobanks as L = .f.
      dim global addtrade as n = 0
      dim global ulot as c = ""
      dim global emok as L
      dim global compphone as c
      emok = .f.

      'script_play_local("getstartup2")
      :a5.minimize()

      '=========================
      x = getstart()

      '=========================
      lot = lotset
      t=table.open("employ",file_ro_shared)
      query.filter="username="+quote(trim(scode))
      query.order=""
      query.options="T"
      ix=t.query_create()
      if ix.records_get()=0 then
      a5.close()
      end if
      ulot=t.lot
      username=t.username
      salesman=t.salesname
      cellphone = t.cellphone
      password = t.password
      usernow = t.usernow
      permissions = t.permissions
      userlot = t.lot
      gotoileads = t.gotoileads
      gotosales = t.gotosales
      gotoother = t.gotoother
      gotoreports = t.gotoreports
      gotocsi = t.gotocsi
      buycar = t.buycar
      gotoslsschedule = t.gotoslsschedule
      gotoslslabels = t.gotoslslabels
      setupemail = t.setupemail
      seedealnumbers = t.seedealnumbers
      reshadow = t.reshadow
      gotocomp = t.gotocomp
      cleantbls = t.cleantbls
      gotoinv=t.gotoinv
      editletters=t.Editletters
      gotoslspeople = t.gotoslspeople
      editownpassword = t.editownpassword
      editownuserinfo=t.editownuserinfo
      seeallslspeople=t.seeallslspeople
      editpermiss=t.editpermiss
      gotovendors=t.gotovendors
      gotobanks=t.gotobanks
      gotoagents=t.gotoagents
      gotorebates=t.gotorebates
      deletesales=t.deletesales
      makebackup=t.makebackup
      editcompinfo=t.editcompinfo
      advertisers=t.advertisers
      compbat = t.bat
      comptire = t.tire
      complemon = t.lemon
      comptags = t.transfer
      comppmtterm = t.term
      comptermtype = t.termtype
      compapr = t.apr
      compnewwheels = t.newwheels
      compantitheft = t.antitheft
      t.close()

      t=table.open("compa.dbf",file_ro_shared)
      query.filter="lot="+s_quote(trim(lotset))
      query.order=""
      query.options="T"
      ix=t.query_create()
      lot=t.lot
      group=t.group
      comptaxrate=t.taxrate
      compdtaxrate=t.dtaxrate
      docrate=t.docrate
      compname=t.name
      compaddress=t.address
      compcsz=t.cstzip
      addtrade=t.addtrade
      comppred=t.pred
      electron=t.electron
      compphone = t.phone
      t.close()

      :a5.maximize()
      If PrintDailyReport = "Y" then
      dim global leasemonths as n
      leasemonths = 10

      script_play_local("printstartreports")

      end if
      'topparent.Commit()
      'topparent.Resynch()
      'topparent.Refresh_Layout()
      delete leasemonths
      if alltrim(pword)<>alltrim(password) then
      UI_MSG_BOX("User","Your User name or Password is incorrect. UpsLog will now close",UI_OK)
      sleep(3)
      a5.close()
      end if
      form.view("Begin")
      FUNCTION getstart AS C ( )
      Dim prmpt_title as c
      dim prmpt_prompt as c
      dim prmpt_default as c
      Dim prmpt_title2 as c
      dim prmpt_prompt2 as c
      dim prmpt_default2 as c
      'dim global pword as c
      dim global perm as c
      'dim global password as c

      DIM global scode as C
      DIM global pword as C
      Dim global lotset as C = "1"
      DIM global PrintDailyReport as C
      DIM SHARED varC_result as C
      printlist = "N"
      footer_string = "Check the print box if you want to print the reports."
      ok_button_label = "&OK"
      cancel_button_label = "&Cancel"
      varC_result = ui_dlg_box("Startup Check",<<%dlg%
      {region}
      User Code:| [.25scode];
      password:| [%p%.25pword];
      Lot to use:| [.5lotset];
      ;;
      {region}Print List Daily Reports?:{endregion}|
      {region}(PrintDailyReport:Y)
      (PrintDailyReport:N){endregion};
      ;
      {endregion};
      {region}
      {text=30,2:footer_string};
      {endregion};
      {line=1,0};
      {region}
      <15=ok_button_label!OK> <15=cancel_button_label!CANCEL>
      {endregion};
      %dlg%)

      lotset = lotset
      END FUNCTION
      Dave Mason
      [email protected]
      Skype is dave.mason46

      Comment


        #18
        Re: Alpha's Security and Updates to an app

        Thanks Dave,

        I'll take a look at this.
        Alpha 5 Version 11
        AA Build 2999, Build 4269, Current Build
        DBF's and MySql
        Desktop, Web on the Desktop and WEB

        Ron Anusiewicz

        Comment


          #19
          Re: Alpha's Security and Updates to an app

          Ron,

          Just trying to give back what was so freely given to me. I wrote it with help and have expended a number of times since v3(I think). It can be smaller or larger depending what you need.

          At the time, Alpha had no security and users system at all. I think they started that about v7. I saw no reason to change and questions like yours exemplifies my reasoning.
          Dave Mason
          [email protected]
          Skype is dave.mason46

          Comment


            #20
            Re: Alpha's Security and Updates to an app

            Thanks Dave,

            I have submitted a bug report. I'm not sure, but I think this could be a bug. Selwyn replied that he will look into this.

            Ron
            Alpha 5 Version 11
            AA Build 2999, Build 4269, Current Build
            DBF's and MySql
            Desktop, Web on the Desktop and WEB

            Ron Anusiewicz

            Comment


              #21
              Re: Alpha's Security and Updates to an app

              Ron,
              If you are still stuck on this. Or anyone else interested.
              There is a solution. I just had the need and worked out a way to extract and restore user/group settings after an update.
              I am just working on coding to run silently.

              Comment


                #22
                Re: Alpha's Security and Updates to an app

                In an update, the security is deeply embedded apparently in one or both of the .ALB and .ALM
                I couldn't locate where, using hexadecimal search for a username nor master password, it may be encrypted.
                Tom having shown interest here may have something to add to this below.

                As far as I have got going using on both ends;-
                ...a5_security_option("DefineUsersandGroups"), the user must then select Export users/Groups, and then after update can Import from this dialogue. Or to send the resulting export file. It works in that the users groups are perfectly restored.
                I thought I would be able to find out how to invoke the Alpha command/function but no luck, yet.
                The file that is created a fairly uncomplicated text readable file. But that would only help if it could be automated for the client's system to email that across and include it with the update.

                Or to get the client directly to the export/import dialogue would be an improvement. Possibly inserting keypresses to complete the selection??
                Another thought to silently email the clients ALB and ALM, copy to another folder my side and do the export there.
                Still a bit messy
                Last edited by Ray in Capetown; 07-08-2013, 05:34 AM.

                Comment


                  #23
                  Re: Alpha's Security and Updates to an app

                  Ray,

                  I submitted a bug report to Alpha. Selwyn did respond that they would look into it. But I never heard back.
                  I know they are busy with Alpha Anywhere so I just let it pass.

                  I just kicked the can down the road, but this may become an issue for me in the near future.
                  Thank you for your follow-up. I'll take a look at this myself.

                  Ron
                  Alpha 5 Version 11
                  AA Build 2999, Build 4269, Current Build
                  DBF's and MySql
                  Desktop, Web on the Desktop and WEB

                  Ron Anusiewicz

                  Comment


                    #24
                    Re: Alpha's Security and Updates to an app

                    Great
                    First prize would be to get the operation that Alpha executes at the end, after final selection in the export or import dialog.
                    Then one could silently export and import before and after an update, or email the setup to put in to the update that is sent.
                    As you noted, the users/groups settings is not kept in any reference file.

                    We also cannot copy just the ALM and ALB in isolation to another database for the purpose of accessing to exporting the user info.

                    Comment


                      #25
                      Re: Alpha's Security and Updates to an app

                      The following idea I learned on this forum ages ago so I cannot remember who from and therefore can't give specific credit. I also have not used it it in practice myself but I have tested back then and I just did again and it still works.

                      Create a separate app just to hold the users and groups info. Set them up just as you would in your main app. Create this separate app in the same folder or a subfolder of the main app. Then when setting up security in the main app on the security dialog go to the 'Advanced Options' tab and choose 'Use shared user Account File' and then choose the separate app. Now as long as the updated main app you send to your customer points to that separate app their custom users will not get over written. In order for your end user to add users or groups provide a button/process that opens that separate app.

                      This probably won't suit everyone but thought I would throw it out there as an alternative.
                      Tim Kiebert
                      Eagle Creek Citrus
                      A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                      Comment


                        #26
                        Re: Alpha's Security and Updates to an app

                        Thanks Tim
                        Two main complications there were A. getting it deployed and B. allowing client control of user/password changes from within the main app
                        The principle is correct but implementation overly complicated for both parties.
                        EDIT
                        But still a consideration. It may trump export / import depending on how often updates are sent against how often user setups change. My users seem often to do password changes and give operators temporary access to groups - switching apps a bit messy, but doable. I shall revisit that.
                        Last edited by Ray in Capetown; 07-09-2013, 04:22 AM.

                        Comment


                          #27
                          Re: Alpha's Security and Updates to an app

                          Originally posted by Ray in Capetown View Post
                          Thanks Tim
                          Two main complications there were A. getting it deployed and B. allowing client control of user/password changes from within the main app
                          The principle is correct but implementation overly complicated for both parties.
                          EDIT
                          But still a consideration. It may trump export / import depending on how often updates are sent against how often user setups change. My users seem often to do password changes and give operators temporary access to groups - switching apps a bit messy, but doable. I shall revisit that.
                          Ray, I can't address your A (getting deployed) but years ago I did what Tim describes and though I don't remember the details now, I am certain I was able to give the client control of user/password changes from within the main app by building my own functions (and an Xdialog) to access user changes and passwords. That app is no longer being used but I probably still have a copy somewhere.

                          Raymond Lyons

                          Comment


                            #28
                            Re: Alpha's Security and Updates to an app

                            Originally posted by Raymond Lyons View Post
                            Ray, I can't address your A (getting deployed) but years ago I did what Tim describes and though I don't remember the details now, I am certain I was able to give the client control of user/password changes from within the main app by building my own functions (and an Xdialog) to access user changes and passwords. That app is no longer being used but I probably still have a copy somewhere.

                            Raymond Lyons
                            I can't find my old app. However, in thinking about it what I did may have been only similar to what Tim suggested, i.e., all my scripts and functions may have been stored in the other (otherwise empty) app. Thus when I updated script and functions it would have been to the other app, not the main one where security was. I think either approach would work, and since I can't right now find the old app I'm not sure which way I went. In any case, I do know I created my own interface to all aspects of the A5 system security and added other things to it such as creating a user table with data about the users, e.g., mobile number, etc. I'll look some more for the app when I get more time. Right now I am busy adding on to and remodeling our bathroom and can't spend a lot of time on this kind of thing.

                            Raymond Lyons

                            Comment


                              #29
                              Re: Alpha's Security and Updates to an app

                              Well Ray, you tried, thanks.
                              Luck with the bathroom.
                              Ray

                              Comment


                                #30
                                Re: Alpha's Security and Updates to an app

                                How simple the solution was. And it is completely seamless.
                                Create a new DB with nothing else but some security set on
                                Make a subfolder , copy it in. There are simply 4 files
                                In your primary system point security to that. All security ops are managed in the same way as the default methods.
                                That security db NEVER gets opened.

                                Initial install include that folder. Thereafter updates exclude it.
                                Changes on the user side remain unaffected.
                                In the attached browse shot - ACCTS\AC\PPP is the folder where the primary app resides. Its tiny and portable.
                                Attached Files

                                Comment

                                Working...
                                X